萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> 解決MySQL不允許從遠程訪問的方法

解決MySQL不允許從遠程訪問的方法

解決MySQL不允許從遠程訪問的方法

解決方法:
1。改表法。可能是你的帳號不允許從遠程登陸,只能在localhost。這個時候只要在localhost的那台電腦,登入mysql後,更改 “mysql” 數據庫裡的 “user” 表裡的 “host” 項,從“localhost”改稱“%”

mysql -u root -pvmwaremysql>use mysql;
mysql>update user set host = ‘%’ where user = ‘root’;
mysql>select host, user from user;
 

2. 授權法。例如,你想myuser使用mypassword從任何主機連接到mysql服務器的話。

GRANT ALL PRIVILEGES ON *.* TO ‘myuser’@'%’ IDENTIFIED BY ‘mypassword’ WI
TH GRANT OPTION;
 

如果你想允許用戶myuser從ip為192.168.1.6的主機連接到mysql服務器,並使用mypassword作為密碼

GRANT ALL PRIVILEGES ON *.* TO ‘myuser’@'192.168.1.3′ IDENTIFIED BY
‘mypassword’ WITH GRANT OPTION;
 

我用的第一個方法,剛開始發現不行,在網上查了一下,少執行一個語句 mysql>FLUSH   PRIVILEGES
使修改生效.就可以了


x:>mysql -u root -pvmware

mysql> use mysql;
mysql> update user set host = ‘%’ where user = ‘root’;
mysql> select host, user from user;

mysql> flush privileges;
 


注:mysql> flush privileges; 使修改生效。


遠程連接到MySQL需要做的

    1. 進入MySQL,創建一個新用戶xuys:
   
    格式: grant 權限 on 數據庫名.表名 用戶@登錄主機 identified by "用戶密碼";
    grant select,update,insert,delete on *.* to [email protected] identified by "xuys1234";

   
    查看結果,執行:
    use mysql;
    select host,user,password from user;

   
    可以看到在user表中已有剛才創建的xuys用戶,host字段表示登錄的主機,其值可以用IP,也可用主機名,將host字段的值改為%就表示在任何客戶端機器上能以xuys用戶登錄到MySQL服務器,建議在開發時設為%.
    update user set host = '%' where user = 'xuys';

    2.
    ./mysqladmin -u root -p pwd reload
    ./mysqladmin -u root -p pwd shutdown

    3.
    ./mysqld_safe --user=root &
   
    記住: 對授權表的任何修改都需要重新reload,即執行第3步.

    如果經過以上3個步驟還是無法從客戶端連接,請執行以下操作,在MySQL數據庫的db表中插入一條記錄:
    use mysql;
    insert into db values('192.168.88.234','%','xuys','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
    update db set host = '%' where user = 'xuys';

   
    重復執行上面的第2,3步.
 
 
    A2:
 
    Web與MySQL數據庫分離開來是一個不錯的選擇,避免因為大量的數據庫查詢占用CPU而使Web資源不足,同時可以使Web服務器的資源盡最大的提供浏覽服務,而數據庫服務器單獨的只處理數據庫事務.

    我對這方面的原理不甚太十分了解,我的做法其實就是下面要說的,很簡單.大家有更好的經驗和技巧不妨提出來分享一下.

    適用范圍: 擁有獨立主機權限
    硬件配置: 兩台服務器,至於具體服務器硬件配置就不在本文范圍內了
    其中: A為Web服務器(假設IP為: 192.192.192.192),B為MySQL數據服務器(假設IP為: 168.168.168.168)

    著手動作:

    1. 在Web服務器A配置好Web服務.關於這方面文章很多了.假設Web服務器的IP為: 192.192.192.192
    2. 在數據庫服務器B安裝好MySQL服務
    3. 現在新版的MySQL一般默認都不允許遠程連接的,需要建立遠程連接賬號才可以

   
    以命令行方式使用root賬號進入MySQL
    mysql -u root -p pass

    選擇進入MySQL數據庫
    use mysql;

    查看所有存在的賬號和地址
    SELECT `Host`,`User` FROM `user`;

    比如我的就是:

    +------------+-------+
    | Host        | User  |
    +------------+-------+
    | localhost |          |
    | localhost | pma  |
    | localhost | root   |
    +------------+-------+
    3 rows in set (0.00 sec)

   
    也就是說,存在三個只允許本地連接的(localhost)賬號,分別為root,pma,空用戶.

    現在決定讓root具有上面那個Web服務器A的遠程鏈接的權限,那麼就這樣:
    UPDATE `user` SET `Host` = '192.192.192.192' WHERE `User` = 'root' LIMIT 1;

    這樣192.192.192.192這台Web服務器就可以遠程連接到這個數據庫服務器了,假如你想讓任何遠程機器都可以連接這個數據庫,就將192.192.192.192換為%,不過不建議這樣做,原因你知道啦!

    假如你想新建一個用戶new_user具備遠程鏈接的權限的話,就這樣:
    INSERT INTO `user` ( `Host` , `User` , `Password` , `Select_priv` , `Insert_priv` , `Update_priv` , `Delete_priv` , `Create_priv` , `Drop_priv` , `Reload_priv` , `Shutdown_priv` , `Process_priv` , `File_priv` , `Grant_priv` , `References_priv` , `Index_priv` , `Alter_priv` , `Show_db_priv` , `Super_priv` , `Create_tmp_table_priv` , `Lock_tables_priv` , `Execute_priv` , `Repl_slave_priv` , `Repl_client_priv` , `ssl_type` , `ssl_cipher` , `x509_issuer` , `x509_subject` , `max_questions` , `max_updates` , `max_connections` ) VALUES ('192.192.192.192', 'new_user', PASSWORD( 'new_user_password' ) , 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', '0', '0', '0');

    將new_user改為你想要的名字就可以了,密碼是: new_user_password,當然你可以隨意設置.

    當你的數據庫可以遠程連接後,你就可以在你的Web服務器的論壇config.inc.php中設置$dbhost變量為你的MySQL數據庫服務器B的IP了:
    $dbhost = '168.168.168.168';

    實際操作中,最好兩台機器在同一個機房的同一網段/防火牆內.當然如果有可能的話,將數據庫服務器放置於Web服務器網絡內的局域網中就更好了.
 
 
    Q3:
 
    還是這樣簡潔些:
    grant all on yourdb.* to yourUsername@yourHost identified by "yourPassword";
    flush privileges;     //使權限立刻生效

 

copyright © 萬盛學電腦網 all rights reserved