使用命令列連線遠端 MySQL 資料庫

Mehvish Ashiq 2022年5月31日
使用命令列連線遠端 MySQL 資料庫

當我們在分散式環境中工作時,需要遠端連線。本教程是一個分步指南,介紹如何使用命令列連線遠端 MySQL 資料庫。

使用命令列連線遠端 MySQL 資料庫

在繼續之前,有必要先做幾件事——訪問命令列或終端視窗以及在另一個位置(遠端 MySQL 伺服器)上執行的 MySQL 伺服器。

我們還需要遠端和本地機器上的 rootsudo 許可權。如果你無法直接訪問 MySQL 伺服器,也可以使用 ssh 進行遠端連線。

如果你想使用 ssh 進行連線,你可以使用 this article。

本教程將指導你使用命令列與 MySQL 資料庫建立遠端連線。它包括以下步驟。

  1. 編輯 MySQL config 檔案
  2. 配置防火牆允許遠端連線
  3. 允許 root 遠端登入
  4. 連線到遠端 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';

usernameHostDb 替換為你指定的值。之後,你現在可以從遠端位置訪問指定的資料庫。

作者: Mehvish Ashiq
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

相關文章 - MySQL Database