前言
今天在給測試服務器安裝完mysql服務器之後,想着使用我本地的navicat連接一下,但是直接報了Host 'xxx' is not allowed to connect to this MySQL server這個錯誤,一開始我以爲是測試服務器防火牆或者是端口沒有對外開放引起的,但是發現測試環境防火牆沒開以及端口也是開放的,後來網上找了一下,原來是mysql服務器沒有開啓遠程訪問權限導致的。
解決方法
登錄到mysql服務器之後,可以使用如下的查詢語句查看是否開啓了遠程訪問權限,查詢結果顯示確實是只能允許本地的root用戶連接。
select host,user,password from user;
可以使用如下語句進行修改所有主機都可以訪問權限
update user set host = '%' where user = 'root';
但是執行完這條語句之後卻發現報錯了,報ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'
後來網上找了一下,說是是“唯一索引”引起的!讓我們檢查入的數據是否“重複”,但是這是用戶表呀,我也沒有手動的去插入數據,當然也不能隨意的刪除用戶表的數據吧,所以又找到了另外一個方法,直接無視這個錯誤
直接執行如下命令即可
flush privileges;
執行完之後就可以成功連接!完美