遠(yuǎn)程連接提示:Host 'xxx' is not allowed to connect to this MySQL server。是mysql未開(kāi)啟mysql遠(yuǎn)程訪問(wèn)權(quán)限導(dǎo)致。
解決方法
- 登錄到mysql: mysql -uroot -ppwd
- 查看user表
# 使用數(shù)據(jù)庫(kù)mysql
use mysql;
# 查看主機(jī)和用戶
mysql> select host, user from user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+------------------+
4 rows in set (0.00 sec)
表中host、user字段標(biāo)識(shí)了可以訪問(wèn)數(shù)據(jù)庫(kù)的主機(jī)和用戶。例如上面的數(shù)據(jù)就表示只能本地主機(jī)通過(guò)root用戶訪問(wèn)。
為了讓數(shù)據(jù)庫(kù)支持遠(yuǎn)程主機(jī)訪問(wèn),有兩種方法可以開(kāi)啟遠(yuǎn)程訪問(wèn)功能。
第一種(改表法):
修改host字段的值,將localhost修改成需要遠(yuǎn)程連接數(shù)據(jù)庫(kù)的ip地址?;蛘咧苯有薷某?。修改成%表示,所有主機(jī)都可以通過(guò)root用戶訪問(wèn)數(shù)據(jù)庫(kù)。為了方便,我直接修改成%。命令:
mysql> update user set host = '%' where user = 'root';
再次查看user表, 修改成功,輸入命令mysql> FLUSH PRIVILEGES; 回車(chē)使剛才的修改生效,再次遠(yuǎn)程連接數(shù)據(jù)庫(kù)成功。
mysql> select host, user from user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| % | root |
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+------------------+
4 rows in set (0.00 sec)
第二種(授權(quán)法):
例如,你想root使用mypassword從任何主機(jī)連接到mysql服務(wù)器的話。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
如果你想允許用戶myuser從ip為192.168.1.3的主機(jī)連接到mysql服務(wù)器,并使用mypassword作為密碼:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY
'mypassword' WITH GRANT OPTION;
輸入命令FLUSH PRIVILEGES; 回車(chē)使剛才的修改生效,再次遠(yuǎn)程連接數(shù)據(jù)庫(kù)成功。
注意:別忘記最后的FLUSH PRIVILEGES; 刷新先前的修改。