前言
MySQL是目前非常流行的資料庫之一,也是中小企業持久化存儲的首選資料庫。
不同于我們日常學習,在實際應用中,MySQL服務都會挂載在某台伺服器上。如果MySQL部署在某台雲伺服器上,這樣一來,操縱資料庫每次都需要先連接配接伺服器,再進入資料庫操作,不是很友善。
于是,學習遠端連接配接 MySQL 的方法是資料庫在伺服器上時的必修課。
但為了安全考慮,MySQL的遠端連接配接并不是一鍵容易事,特别是在MySQL8.x版本時,下面會介紹到。
準備工作
在這個階段,確定你已經進入了你想要遠端通路的資料庫服務中,通常的界面如下:
放行遠端主機通路
通常來說,MySQL隻允許使用者在本地主機通路。通過查詢
user
表,也可以看到允許的主機資訊:
select host,user from mysql.user
host
字段下面的
localhost
代表隻接受本地主機。
是以,我們的工作就很清晰了,就是修改通路權限資訊,使得指定的使用者能夠接受遠端通路。通常來說,我們有兩種方式實作這個效果。
第一種:改賬号權限(建議)
既然遠端主機沒有權限連接配接,我們可以通過 GRANT 語句修改指定使用者的權限。
GRANT 語句的文法大緻為:GRANT 權限 ON 資料庫對象 TO 使用者。
授予對所有資料庫操作的所有權限給任何主機(’%’)通路的
root
使用者 ,這樣任何連接配接到該資料庫的root使用者的能通路所有資訊。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密碼' WITH GRANT OPTION;
重新整理權限:
flush privileges;
再次查詢,可以發現會新增一條記錄,
host
字段下的
%
表示任何主機:
如果隻是想授予某個單獨的主機通路權限,則
%
可以修改為指定的 IP:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.16.28.71' IDENTIFIED BY
'你的密碼' WITH GRANT OPTION;
效果類似:
重新整理權限:
flush privileges;
第二種:改表法
使用 GRANT 語句的方法是直接添加一條新記錄,我個人建議按上面的方式做。
但是,我們同樣可以采用直接修改
user
為
root
的
host
字段内容,直接使用
UPDATE
語句修改表:
UPDATE mysql.user SET host = '%' WHERE user = 'root';
重新整理權限:
flush privileges;
效果如圖,直接修改
host
字段值,而不是添加。
到這一步,大多數情況下,我們就可以使用資料庫工具如:Web SQLyog、Navicat、Dbeaver等等連接配接上我們的遠端資料庫了。
MySQL 8.x 的注意點
但請注意,如果你的 MySQL 版本是 8.x的話,由于密碼加密方式的不同,連接配接時可能會出現如下提示:
是以,我們必須 修改加密方式 以實作遠端連接配接,使用
ALTER
語句:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密碼';
最後不要忘了重新整理權限:
flush privileges;
OK,教程整體到這裡就結束了,如果遇到什麼問題,歡迎大家在評論區發表看法
參考
mysql開啟遠端連接配接