在開發過程中,有時候需要遠程連接并管理別的機器上的MYSQL數據庫,在實現的過程中會遇到一系列的問題,現在以遠程訪問我自己安裝在Ubuntu上的MYSQL數據為例(端口為默認端口3306),說明一下配置步驟及每一步中遇到的問題及相應解決方法:
遠程連接管理MYSQL,總體上來說有三步:(A為主操作機器,B為遠程機器(MYSQL安裝在B上,由A訪問B)
1,在被連接的MYSQL中創建專門的遠程連接用戶wow;
2,修改被連接的MYSQL的配置文件my.cnf,使此MYSQL不僅僅支持本地IP127.0.0.1的監聽,也支持其他IP的監聽,并重啟Mysql服務,使配置生效。
3,驗證A中MYSQL的配置端口是否與B中的一致(都是3306?),如果一致,通過 mysql -h B的ip -u wow --port=3306 -p,來遠程連接。
下面,就每一步詳細說明一下:
一,在被連接的MYSQL中創建專門的遠程連接用戶wow;
之所以要創建專門的用戶,是因為MYSQL在最初安裝的時候,默認的root帳號以及其他的帳號是僅限于在localhost連接使用的。在遠程機器上即使你用同樣的用戶名及密碼登錄,都無法正常連接。比如你在遠程機器192.168.83.56上用root帳號登錄192.168.11.12機器上的Mysql:
mysql -h 192.168.11.12 -u root -p,是無法正常登錄的。此時,需要登錄192.168.11.12機器,進入mysql中的mysql數據庫查看user表,確認具體的root權限,特別是它的host是localhost還是你對應的IP,還是%。
解決方法:
A,(在192.168.11.12機器中的MYSQL中創建專門的遠程用戶root或者wow),創建用戶與賦予權限有兩種方法:
1)改表法。可能是你的帳號不允許從遠程登陸,只能在localhost。這個時候只要在localhost的那臺電腦,登入mysql后,更改 "mysql" 數據庫里的 "user" 表里的 "host" 項,把"localhost"改為"%"。“%”的意思就是所有host都可以訪問。
mysql -u root -p vmware mysql>use mysql; mysql>update user set host = '%' where user = 'root';mysql>select host, user from user;
2)授權法。例如,你想wow使用mypassword從任何主機連接到mysql服務器的話。
GRANT ALL PRIVILEGES ON *.* TO 'wow'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
如果你想只允許用戶wow從ip為192.168.83.56的主機連接到192.168.11.12的mysql服務器,并使用mypassword作為密碼
GRANT ALL PRIVILEGES ON *.* TO 'wow'@'192.168.83.56' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
FLUSH PRIVILEGES
第二句表示從mysql數據庫的grant表中重新加載權限數據。因為MySQL把權限都放在了cache中,所以在做完更改后需要重新加載。
B,在用GRANT授權法創建完用戶wow并賦予權限以后,是不是就可以用了?不可以嗎?我們可以簡單驗證一下。先在遠程機器192.168.83.56上 mysql -h 192.168.11.12 -u root -p,是無法正常登錄。報2003的錯:
新聞熱點
疑難解答