使用命令列連線遠端 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 替換為你指定的值。之後,你現在可以從遠端位置訪問指定的資料庫。
