問題描述

在我遠端連線我的伺服器資料庫的時候,navicat給我提示了這麼一個錯誤:

1 ERROR 1130: Host 'xxx' is not allowed to connect to thisMySQL server.

思考解決

  • 首先

鑑於前兩天我剛幫別人解決了這個一模一樣的問題,都是錯誤程式碼1130,當時解決的方向是:(不過本方法對我而言並沒有生效)

  1. 先考慮埠是否開放:在客戶端telnet xxx 3306,發現無法telnet進去,說明:①埠可能沒開;②被防火牆把埠給限制了;
  2. 再考慮埠是否開啟問題:遠端連線到伺服器端,netstat -ltp .發現埠也開著呢呀,服務正在執行。隨後重啟了一下,在客戶端試了還是不行;
  3. 那麼就試試防火牆吧:關閉防火牆,systemctl stop firewalld
  4. 最後埠就可以使用了。
  5. 這裡要說一下:
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;
  • 完成以上配置後,再去檢測連結,就提示成功了。

恢復正常訪問了。