❝本文將解決本機Navicat連線遠端MySQL伺服器提示不允許連線。
❞
本機Navicat連接centos7.3虛擬機器的MySQL資料庫確認連線後會報出一個這樣的錯誤
#這個問題一看就是遠端連線的問題,但是新學習的小夥伴估計就很難想到是這方面的問題,接下來咔咔一步一步的幫助解決這個問題。
首先我們來到虛擬機器終端,連接上MySQL。
執行指令mysql -uroot -p
,然後輸入密碼,進入到MySQL
執行指令show databases;
可以檢視到目前所有的資料庫我們主要要注意的是mysql
這個函式庫,切換資料庫,執行指令use mysql
,在mysql的這個資料庫裡邊有一個user表。 在這裡說一個小小的點,在終端我們以往執行clear
就可以清屏,但是在mysql中執行clear是沒有作用的。
在mysql終端清屏指令是system clear
好了,回歸正題,在user
表中,我們只需要兩個訊息,一個是hos一個是user。我們需要執行查詢語句給查詢出來。
在上圖中,host列指定的是允許使用者登入的ip,如果為localhost那就只能本機登錄,遠端是登入不了的。
這就是為什麼我們本地navicat連接mysql無法連線的原因。
由於是本地的虛擬機器不存在安全問題,所以咔咔將會將host設定為%
。
% 代表通配符,代表這所有的連線都可以,不限制任何ip。
注意:在生產環境下不能為了省事將host設定為%,這樣做會存在安全問題,具體的設定可以根據生產環境的IP進行設定;
問題已經找到,接下來就去解決它。
#執行指令update user set host='%' where user= 'root';
,將localhost修改為%,允許讓所有ip連線。 到這裡還需要進行一次權限刷新flush privileges
本地navicta再次連接資料庫。這個時候就可以了。
#關於flush privileges
什麼時候需要執行。
這個指令是將user和privilege表中的使用者資訊或權限從mysql函式庫中提取到記憶體中。
當使用者資料和權限出現修改後,不想重啟資料庫的情況就想直接生效,就需要執行這個指令。
也就是說這個指令只針對於使用者資料和使用者權限修改的情況。
以上是本機連線虛擬機器MySQL提示is not allowed to connect的詳細內容。更多資訊請關注PHP中文網其他相關文章!