問題描述
在我遠程連接我的服務器數(shù)據(jù)庫的時候,navicat給我提示了這么一個錯誤:
ERROR1130: Host'xxx'is not allowed to connect to thisMySQL server.
思考解決
首先
鑒于前兩天我剛幫別人解決了這個一模一樣的問題,都是錯誤代碼1130,當時解決的方向是:(不過本方法對我而言并沒有生效)
先考慮端口是否開放:在客戶端telnet xxx 3306,發(fā)現(xiàn)無法telnet進去,說明:①端口可能沒開;②被防火墻把端口給限制了;
再考慮端口是否開啟問題:遠程連接到服務器端,netstat -ltp .發(fā)現(xiàn)端口也開著呢呀,服務正在運行。隨后重啟了一下,在客戶端試了還是不行;
那么就試試防火墻吧:關(guān)閉防火墻,systemctl stop firewalld
最后端口就可以使用了。
這里要說一下:
# ubuntu服務器
命令:service ufw start/stop/status
# centos服務器
命令1:service iptables start/stop/status # centos6.x
命令2:systemctl start/stop/status firewalld # centos7.x,centos7不用iptables了,改用firewall了
其次
是否可能是mysql的配置中bind-address的問題呢,于是我去找到mysqld.cnf文件,查看[mysqld]下的這個配置,結(jié)果也沒問題,因為其默認配置的就是0.0.0.0。不過這個問題有時候也是要考慮到的。
最后
那么就重新思索和查找解決問題的方案。就是下面這種:
(1):登錄服務器端mysql數(shù)據(jù)庫:
mysql -u root -p
use mysql;
(2):更新root用戶的主機權(quán)限:
update user set host = '%' where user = 'root';
然后我們看一下修改后的root主機權(quán)限:select host, user from user;
可以看到root的主機權(quán)限已經(jīng)變成通配符%,任意主機都可以登錄了。
(3):使修改權(quán)限生效:
flush privileges;
完成以上配置后,再去檢測鏈接,就提示成功了。
恢復正常訪問了。