本文將解決本地Navicat鏈接遠程MySQL服務器提示不容許鏈接。mysql
1、問題還原
本地Navicat鏈接centos7.3虛擬機的MySQL數據庫
sql
確認鏈接後會報出一個這樣的錯誤
數據庫
2、發現問題
這個問題一看就是遠程鏈接的問題,可是新學習的小夥伴估計就很難想到是這方面的問題,接下來咔咔一步一步的幫助解決這個問題。centos
首先咱們來到虛擬機終端,鏈接上MySQL。安全
執行命令mysql -uroot -p
,而後輸入密碼,進入到MySQL服務器
執行指令show databases;
能夠查看到目前全部的數據庫
咱們主要須要關注的是mysql
這個庫,切換數據庫,執行命令use mysql
,在mysql的這個數據庫裏邊有一個user表。
在這裏說一個小小的點,在終端咱們以往執行clear
就能夠清屏,可是在mysql中執行clear是沒有做用的。學習
在mysql終端清屏指令是system clear
centos7
好了,迴歸正題,在user
表中,咱們只須要倆個信息,一個是hos一個是user。咱們須要執行查詢語句給查詢出來。code
在上圖中,host列指定的是容許用戶登陸的ip,若是爲localhost那就只能本機登陸,遠程是登陸不了的。圖片
這也就是爲何咱們本地navicat鏈接mysql沒法鏈接的緣由。
因爲是本地的虛擬機不存在安全問題,因此咔咔將會把host設置爲%
。
% 表明通配符,表明這全部的鏈接均可以,不限制任何ip。
注意:在生產環境下不能爲了省事將host設置爲%,這樣作會存在安全問題,具體的設置能夠根據生產環境的IP進行設置;
問題已經找到,接下來就去解決它。
3、解決問題
執行指令update user set host='%' where user='root';
,將localhost修改成%,容許讓全部ip鏈接。
到這裏還須要進行一次權限刷新flush privileges
本地navicta再次鏈接數據庫。這個時候就能夠了。
4、擴展
關於flush privileges
在何時須要執行。
這個命令是將user和privilege表中的用戶信息或者權限從mysql庫中提取到內存中。
當用戶數據和權限出現修改後,不想重啓數據庫的狀況下就想直接生效,就須要執行這個指令。
也就是說這個指令只針對於用戶數據和用戶權限修改的狀況下。