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


發現問題

使用Navicat連接MySql數據庫時,未能成功,提示信息如下圖:

這個錯誤提示已經很明確了,"不允許主機'desktop-teat9ob'連接到此mysql服務器",知道問題所在就好解決了。

解決辦法

我們遠程聯接到MySql服務器,打開服務器本地Navicat軟件,在查詢編輯器中執行下面的SQL語句

#查詢允許連接的主機及用戶信息
select Host,User,Password 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 `Host` = '::1' and User = 'root';

執行結果:

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

然后查詢user表,查看結果:

可以看到,已經將::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;

如果你想允許用戶root從ip為192.168.0.8的主機連接到MySql服務器的testdb數據庫,並使用123456作為密碼

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM