首頁  >  文章  >  資料庫  >  本機連線虛擬機器MySQL提示is not allowed to connect

本機連線虛擬機器MySQL提示is not allowed to connect

咔咔
咔咔原創
2020-06-30 16:20:54121瀏覽

本文將解決本機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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn