使用命令列連線遠端 MySQL 資料庫
當我們在分散式環境中工作時,需要遠端連線。本教程是一個分步指南,介紹如何使用命令列連線遠端 MySQL 資料庫。
使用命令列連線遠端 MySQL 資料庫
在繼續之前,有必要先做幾件事——訪問命令列或終端視窗以及在另一個位置(遠端 MySQL 伺服器)上執行的 MySQL 伺服器。
我們還需要遠端和本地機器上的 root
或 sudo
許可權。如果你無法直接訪問 MySQL 伺服器,也可以使用 ssh
進行遠端連線。
如果你想使用 ssh
進行連線,你可以使用 this article。
本教程將指導你使用命令列與 MySQL 資料庫建立遠端連線。它包括以下步驟。
- 編輯 MySQL
config
檔案 - 配置防火牆允許遠端連線
- 允許
root
遠端登入 - 連線到遠端 MySQL 伺服器
以下是每個步驟的詳細資訊。
編輯 MySQL config
檔案
使用以下命令在文字編輯器中開啟 config
檔案。我們使用 nano
文字編輯器,但你可以使用任何你覺得舒服的文字編輯器。
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
假設我們忘記或不知道 config
檔案的路徑,那麼我們可以使用 find
命令知道 config
檔案的位置。開啟 config
檔案後,搜尋 [mysqld]
部分。
在 [mysqld]
部分下,找到 bind-address
並將其值從 127.0.0.1
更改為 0.0.0.0
或使用 #
符號註釋此行。
更新 bind-address
選項的原因是什麼?由於預設設定,我們可以使用 IP 地址為 127.0.0.1
的本地計算機連線到該伺服器。
我們允許所有機器遠端連線此伺服器,方法是使用 #
符號評論此選項或將其值替換為 0.0.0.0。
如果我們只想遠端連線一臺機器,我們可以寫我們主機的 IP 地址而不是 0.0.0.0
。完成更改後,儲存並退出檔案。
要應用更新,請使用以下命令重新啟動 MySQL 伺服器。
sudo systemctl restart mysql
配置防火牆以允許遠端連線
在 config
檔案中配置 bind-address
時,你可能已經觀察到預設 MySQL 埠是 3306
。在這裡,我們將調整設定以允許遠端流量到 MySQL 的預設埠,即 3306
。
在開啟流量之前,我們必須正確【配置防火牆】。完成後,我們可以使用下面給出的命令開啟此特定埠的流量。
由於我們使用的是 Ubuntu 20.04,我們將使用 ufw
(簡單的防火牆)。
sudo ufw allow from your_remote_ip_address to any port 3306
只要我們按下Enter,我們就會看到規則更新成功了。
允許 Root 遠端登入
由於其預設設定,我們可以使用本地計算機連線到 root
。我們需要進行一些更改以允許遠端機器以 root
身份連線。
為此,請使用以下命令。
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';
mysql> UPDATE mysql.user SET host='%' WHERE user='root';
然後,使用 systemctl
重新啟動 MySQL 伺服器,如下所示。
sudo systemctl restart mysql
連線到遠端 MySQL 伺服器
一旦遠端 MySQL 伺服器準備好接受遠端連線,我們可以使用以下命令與我們的遠端 MySQL 伺服器建立連線。
mysql -u your_username -h your_mysql_server_ip -p
在這裡,將 your_username
替換為你的使用者名稱,將 your_mysql_server_ip
替換為你的 IP。你也可以使用你的 MySQL 伺服器的 hostname
。
-p
將要求你輸入你在上面給出的命令中使用的使用者名稱的密碼。
如果你已正確完成所有操作,你將最終連線到遠端 MySQL 伺服器。要授予對資料庫的遠端訪問許可權,我們可以執行以下查詢。
mysql> update db set Host='ip_address' where
-> Db='yourDB_name';
mysql> update user set Host='ip_address' where
-> user='username';
將 username
、Host
和 Db
替換為你指定的值。之後,你現在可以從遠端位置訪問指定的資料庫。