當我們在linux下安裝好mysql後,發現在其它pc機上用navicatfor mysql等工具連接時出現拒絕訪問的情況,而只能在本機上連接,這時候需要建立一個允許遠程登錄的數據庫帳戶,這樣纔可以進行在遠程操作數據庫。
方法如下:
默認情況下MYSQL數據庫的系統數據庫mysql系統表user內用戶權限只提供localhost本機登陸;需要更改權限才能實現遠程連接MYSQL數據庫。
可以通過以下方式來確認:
通過ssh工具連接linux(或者直接在linux上操作),-P3307表示mysql端口,默認爲3306可以不用加
root#mysql –h127.0.0.1-uroot -P3307 -p
Enter password: ******
Welcome to the MySQLmonitor. Commands end with ; or \g.
Your MySQL connection idis 4 to server version: 4.0.20a-debug
Type ‘help;’ or ‘\h’ for help. Type ‘\c’to clear the buffer.
mysql> use mysql; (此DB存放MySQL的各種配置信息)
Database changed
mysql> select host, user, password from user;
+-----------+------+-------------------------------------------+
| host | user | password |
+-----------+------+-------------------------------------------+
| localhost | root |*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| linux | root |*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| localhost | | |
| linux | | |
+-----------+------+-------------------------------------------+
4 rows in set (0.00 sec)
由此可以看出,只能以localhost的主機方式訪問。
解決方法:
mysql> Grant all privileges on *.* to 'root'@'%' identified by '123456' with
grant option;
(%表示是所有的外部機器,如果指定某一臺機,就將%改爲相應的機器名;‘root’則是指要使用的用戶名,)
mysql> flush privileges; (運行此句才生效,或者重啓MySQL)
Query OK, 0 rows affected (0.01 sec)
再次查看。。
mysql> select host, user, password from user;
+-----------+------+-------------------------------------------+
| host | user | password |
+-----------+------+-------------------------------------------+
| localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| linux | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| localhost | | |
| linux | | |
| % | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+------+-------------------------------------------+
5 rows in set (0.00 sec)
可以看出已經添加了一個新的用戶
檢查mysqld監聽模式是不是設爲只監聽localhost了,
後面藍色的文字在較高的版本的情況下就不需要添加了
用netstat看看,如果是的話。找到mysql的配置文件my.cnf,把bindaddress修改這臺機器的真實IP就可以了
或者直接把bind address這一項註釋掉也行。需要重啓才能生效。
退出,試試效果....
現在可以成功登錄了..