環境如下
MySQL安裝在192.168.137.100 Ubuntu 12.04 LTS
客戶端在 192.168.137.200 win7
客戶端希望訪問MySQL數據庫,會出現如下錯誤“ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.137.100' (10061)”
C:\>mysql -h 192.168.137.100 -u root -p
Enter password: ****
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.137.100' (10061)
解除地址綁定
這是因爲缺省情況下MySQL是隻允許本機登錄的。修改MySQL的配置文件位於/etc/mysql/my.cnf,不進行地址綁定
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address = 127.0.0.1 <---註釋掉這一行
再次進行訪問,錯誤變成了我這個”ERROR 1130 (HY000): Host 'abbuggy-PC.mshome.net' is not allowed to connect to this MySQL server“。主機不允許連接這個MySQL,看起來已經連上了但是由於權限不夠才被拒絕的。
C:\>mysql -h 192.168.137.100 -u root -p
Enter password: ****
ERROR 1130 (HY000): Host 'abbuggy-PC.mshome.net' is not allowed to connect to this MySQL server
進行授權
有兩種方法,直接修改表內容或者通過授權命令
改表法
將 "mysql" 數據庫的 "user" 表裏的 "host" 字段,從"localhost"改爲"%"。%相當於所有地址,也可以指定某些地址。
~$ mysql -uroot -proot
>use mysql;
>update user set host = '%' where user = 'root'>SELECT host, user FROM user;
授權法
例如,你想用root從任何主機連接到mysql服務器的話。
>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
如果你想允許用戶myuser從ip爲192.168.137.100的主機連接到mysql服務器,並使用root作爲密碼
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.137.100' IDENTIFIED BY 'root' WITH GRANT OPTION;
問題得到解決