今天在配置一台伺服器的時候,怎麼連不上這台伺服器上的mysql。遠程登入正常,在這台機器上訪問自己的mysql正常。錯誤提示SQL
Error(2003):Can't connect to MySQL server on '**'(ip)(10061) (**當時就是代指發起訪問請求的遠程IP)。解決如下:
說明:我使用的是Ubuntu10.04作業系統,使用sudo apt-get命令預設安裝的MySQL。
1、首先嘗試在mysql內賦予該賬戶從遠程IP訪問的許可權。
登陸以後運行以下命令,給予遠端存取用戶端許可權..
grant all on *.* to 'remote'@'172.16.21.39' identified by 'password';
其中:remote表示使用者名稱. '172.16.21.39' 是需要賦予存取權限的Iip地址;password表示遠程登陸密碼.
結果未成功,命令執行成功,但是還是無法遠端存取mysql。還需要進行以下步驟
可能需要以root身份登入上去才能執行該命令。
2、取消mysql本機綁定
也就是取消mysql預設的只能本機訪問的限制。
編輯/etc/mysql/my.cnf(ubuntu下預設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
將”bind-address = 127.0.0.1“注釋掉(前面加上個#即可);如果有需要,可以將127.0.0.1修改成特定的IP地址或者0.0.0.0。
在[mysqld]且面加上
skip-name-resolve
修改之後需要重啟一下mysql服務才會生效。命令:
linux:
sudo /etc/init.d/mysql restart
或者 service mysqld restart
windows:
net stop mysql
net start mysql
至此已經能夠遠端存取MySQL,但是你也許會發現能訪問但是看不到資料庫。這是因為還沒有授予訪問特定資料庫的許可權。
3、給以存在的資料庫授權
如果使用者test 經常在遠程IP地址173.255.213.208的用戶端訪問webdb資料庫,那麼在伺服器端執行的命令應該為(改表法):
mysql> use mysqlmysql> update db set Host='173.255.213.208' where Db='webdb';mysql> update user set Host='173.255.213.208' where user='test';
grant all privileges on rendezvous.* to 'username'@'%' identified by 'password'; flush privileges;
至此,如果沒有意外的話,應該就能遠端存取資料庫了。
有個小細節需要注意。如果你的伺服器裝了防火牆的話,需要開啟3306的訪問,否則也會串連不上。