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