解決MySql報錯:1130 - Host ‘xxx‘ is not allowed to connect to this MySQL server的方法

某知名人物發表於2021-01-02

發現問題

使用Navicat連線MySql資料庫時,未能成功,提示資訊如下圖:

在這裡插入圖片描述

解決辦法

.我們遠端聯接到MySql伺服器,開啟伺服器本地Navicat軟體,在查詢編輯器中執行下面的SQL語句

#查詢允許連線的主機及使用者資訊
select Host,User from mysql.user;

結果如下圖:
在這裡插入圖片描述
從結果中可以看到,MySql只允許使用root使用者從localhost,127.0.0.1和::1主機上進行連線,也就是隻能從本機連線。

注:::1 是Ipv6地址127.0.0.1的縮寫,也就是本機。

我們使用SQL語句將::1改為%,

update mysql.user set `Host` = '%' where  User = 'root';

執行結果:

update mysql.user set `Host` = '%' where  User = 'root';
受影響的行: 1
時間: 0.000ms

可以看到,已經將::1改為了%,%表示匹配所有host的主機的,開放此許可權,會增加MySql的風險,請根據實際情況而定!

執行下面的SQL,使上面的改動生效,否則仍然聯接不上

flush privileges;

執行結果如下:

[SQL] 
flush privileges;
受影響的行: 0
時間: 0.003ms

此時,我們再用Navicat連線MySql伺服器,提示成功,如下圖:
在這裡插入圖片描述
補充
如果你想允許使用者root從ip為192.168.0.8的主機連線到MySql伺服器,並使用123456作為密碼,可以執行下面的SQL語句:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.0.8' IDENTIFIED BY '123456' WITH GRANT OPTION;
#執行下面的語句,使上面的改動生效
FLUSH PRIVILEGES;

相關文章