天天看點

關于MySQL的遠端連接配接的一些總結

前言

MySQL是目前非常流行的資料庫之一,也是中小企業持久化存儲的首選資料庫。

不同于我們日常學習,在實際應用中,MySQL服務都會挂載在某台伺服器上。如果MySQL部署在某台雲伺服器上,這樣一來,操縱資料庫每次都需要先連接配接伺服器,再進入資料庫操作,不是很友善。

于是,學習遠端連接配接 MySQL 的方法是資料庫在伺服器上時的必修課。

但為了安全考慮,MySQL的遠端連接配接并不是一鍵容易事,特别是在MySQL8.x版本時,下面會介紹到。

準備工作

在這個階段,確定你已經進入了你想要遠端通路的資料庫服務中,通常的界面如下:

關于MySQL的遠端連接配接的一些總結

放行遠端主機通路

通常來說,MySQL隻允許使用者在本地主機通路。通過查詢

user

表,也可以看到允許的主機資訊:

select host,user from mysql.user
           
關于MySQL的遠端連接配接的一些總結

host

字段下面的

localhost

代表隻接受本地主機。

是以,我們的工作就很清晰了,就是修改通路權限資訊,使得指定的使用者能夠接受遠端通路。通常來說,我們有兩種方式實作這個效果。

第一種:改賬号權限(建議)

既然遠端主機沒有權限連接配接,我們可以通過 GRANT 語句修改指定使用者的權限。

GRANT 語句的文法大緻為:GRANT 權限 ON 資料庫對象 TO 使用者。

授予對所有資料庫操作的所有權限給任何主機(’%’)通路的

root

使用者 ,這樣任何連接配接到該資料庫的root使用者的能通路所有資訊。

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密碼' WITH GRANT OPTION; 
           

重新整理權限:

flush privileges;
           

再次查詢,可以發現會新增一條記錄,

host

字段下的

%

表示任何主機:

關于MySQL的遠端連接配接的一些總結

如果隻是想授予某個單獨的主機通路權限,則

%

可以修改為指定的 IP:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.16.28.71' IDENTIFIED BY 
'你的密碼' WITH GRANT OPTION; 
           

效果類似:

關于MySQL的遠端連接配接的一些總結

重新整理權限:

flush privileges;
           

第二種:改表法

使用 GRANT 語句的方法是直接添加一條新記錄,我個人建議按上面的方式做。

但是,我們同樣可以采用直接修改

user

root

host

字段内容,直接使用

UPDATE

語句修改表:

UPDATE mysql.user SET host = '%' WHERE user = 'root';
           

重新整理權限:

flush privileges;
           

效果如圖,直接修改

host

字段值,而不是添加。

關于MySQL的遠端連接配接的一些總結

到這一步,大多數情況下,我們就可以使用資料庫工具如:Web SQLyog、Navicat、Dbeaver等等連接配接上我們的遠端資料庫了。

MySQL 8.x 的注意點

但請注意,如果你的 MySQL 版本是 8.x的話,由于密碼加密方式的不同,連接配接時可能會出現如下提示:

關于MySQL的遠端連接配接的一些總結

是以,我們必須 修改加密方式 以實作遠端連接配接,使用

ALTER

語句:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密碼';
           

最後不要忘了重新整理權限:

flush privileges;
           

OK,教程整體到這裡就結束了,如果遇到什麼問題,歡迎大家在評論區發表看法

參考

mysql開啟遠端連接配接