在遠端連線mysql的時候應該都碰到過,root使用者無法遠端連線mysql,只可以本地連,對外拒絕串連。
需要建立一個允許遠程登入的資料庫帳戶,這樣才可以進行在遠程操作資料庫。
方法如下:
預設情況下MYSQL資料庫的系統資料庫mysql系統資料表user內使用者權限只提供localhost本機登陸;
需要更改許可權才能實現遠端連線MYSQL資料庫。
可以通過以下方式來確認:
root#mysql -h localhost -uroot -pEnter password: ******Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 4 to server version: 4.0.20a-debugType ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.mysql> use mysql; (此DB存放MySQL的各種配置資訊)Database changedmysql> select host,user from user; (查看使用者的許可權情況)mysql> select host, user, password from user;+-----------+------+-------------------------------------------+| host | user | password |+-----------+------+-------------------------------------------+| localhost | root | *4ACFE3202A5FF5CF467898FC58AAB1D615029441 || 127.0.0.1 | root | *4ACFE3202A5FF5CF467898FC58AAB1D615029441 |+-----------+------+-------------------------------------------+
由此可以看出,只能以localhost的主機方式訪問。
解決方案:
mysql> Grant all privileges on *.* to 'root'@'%' identified by 'pwd' with grant option;(%表示是所有的外部機器,如果指定某一台機,就將%改為相應的機器名;‘root’則是指要使用的使用者名稱,)mysql> flush privileges; (運行此句才生效,或者重啟MySQL)Query OK, 0 rows affected (0.03 sec)
再次查看。。
mysql> select host, user, password from user;+-----------+------+-------------------------------------------+| host | user | password |+-----------+------+-------------------------------------------+| localhost | root | *4ACFE3202A5FF5CF467898FC58AAB1D615029441 || 127.0.0.1 | root | *4ACFE3202A5FF5CF467898FC58AAB1D615029441 || % | root | *4ACFE3202A5FF5CF467898FC58AAB1D615029441 |+-----------+------+-------------------------------------------+
可以看出已經添加了一個新的使用者
檢查mysqld監聽模式是不是設為只監聽localhost了,用netstat看看。如果是的話,找到mysql的設定檔my.cnf,把bind address修改這台機器的真實IP就可以了
或者直接把bind address這一項注釋掉也行。需要重啟才會生效。
退出,試試效果....
現在可以成功登入了..