分享到

簡介

使用 MySQL 資料庫時,您首先需要思考的問題之一是如何連線和與資料庫執行個體互動。這需要資料庫客戶端(您用來與資料庫互動的元件)和資料庫伺服器(實際儲存、組織和提供資料存取的 MySQL 執行個體)之間的協調。

因此,您需要了解如何以客戶端身份連線,並提供所需的資訊進行身份驗證。在本指南中,我們將介紹如何使用原生 mysql 命令列客戶端(與資料庫執行個體互動最常見且最有用的方法之一)連線至 MySQL 資料庫。

在配套指南中,您可以找到如何設定 MySQL 的身份驗證以滿足專案需求。考慮同時閱讀這兩份指南,以更全面地了解 MySQL 中的身份驗證運作方式。

關於 mysql 客戶端的基本資訊

mysql 客戶端是 MySQL 的預設命令列客戶端和 SQL Shell。您可以互動式地使用它來啟動與伺服器的 Shell 工作階段,也可以將 SQL 檔案饋送給它以在沒有使用者互動的情況下執行。在實作組態選項和設定環境時,它特別有用。互動式探索和特設查詢也是開發程式將使用的存取模式時的強項。

連線至 MySQL 伺服器並進行身份驗證的方式取決於伺服器的組態。在以下章節中,我們將介紹一些基本連線選項。為了清楚起見,我們將區分本機連線和遠端連線

  • 本機連線:客戶端和 MySQL 執行個體位於同一伺服器上的連線
  • 遠端連線:客戶端連線至在不同電腦上執行的網路可存取 MySQL 執行個體

讓我們先從同一部電腦連線至資料庫開始。

使用 mysql 連線至本機資料庫

在沒有任何引數的情況下,mysql 命令會嘗試連線至 Unix socket 檔案以存取本機資料庫。通常,預設 socket 檔案位置由組態檔或編譯時預設值決定。預設情況下,您的作業系統使用者名稱會用於嘗試連線至資料庫。

因此,如果您的目前使用者是本機資料庫上的有效 MySQL 使用者,您可以嘗試輸入以下內容來連線

mysql

如果帳戶存在且不需要密碼,或者如果為帳戶設定了 MySQL socket 身份驗證,您將自動登入。如果使用者名稱在 MySQL 中不存在,或者需要密碼或其他身份驗證,則命令將會失敗。

若要控制 mysql 嘗試登入資料庫的方式,請使用命令列選項傳遞其他資訊

  • --user=<username>-u <username>:指定要用於身份驗證的 MySQL 使用者。
  • --password-p:告知 MySQL 提示輸入 MySQL 使用者的密碼。
  • --host=127.0.0.1-h 127.0.0.1:告知 mysql 使用本機 TCP loopback 位址而非 Unix socket 連線至本機 MySQL 執行個體。如果您的 MySQL 伺服器未組態為使用 Unix socket,則使用此選項非常重要。

注意: MySQL 對 127.0.0.1 的解讀與對 localhost 的解讀不同。指定 127.0.0.1 表示您想要使用 TCP 連線,而 localhost 將導致 MySQL 嘗試使用 Unix socket 連線至本機資料庫。

因此,如果您需要以 MySQL 使用者 eva 和密碼登入,但仍使用 Unix socket 進行連線,您可以輸入

mysql --user=eva --password

mysql 客戶端將提示您輸入帳戶的密碼。

如果您想嘗試以相同的使用者名稱登入,但透過 TCP 連線至本機資料庫,則可以改為輸入

mysql --user=eva --password --host=127.0.0.1

預設身份驗證組態以及初始管理使用者名稱和密碼可能會因 MySQL 的安裝方式而異。但是,許多方法都會設定 MySQL 以使用 Unix socket,並包含預設的 root 使用者作為管理帳戶。

在這些情況下,您可以輸入以下內容以 root 使用者身份登入資料庫

mysql --user=root --password

系統將提示您輸入安裝期間選取或產生的管理密碼以繼續。

所有這些方法都允許您連線至本機 MySQL 資料庫。

連線至遠端資料庫

如果您希望連線至遠端 MySQL 資料庫,則必須提供遠端主機的網路位置,並可能新增一些其他資訊。

可用的身份驗證方法因 MySQL 執行個體的組態而異。但是,最常見的是,您需要提供以下參數進行身份驗證

選項說明
--host=-hMySQL 伺服器的網路主機名稱或 IP 位址。
--port=-PMySQL 伺服器執行的網路埠。如果伺服器使用埠 3306(預設 MySQL 埠),則可以省略此參數。
--user=-u您要以其身份連線的資料庫使用者名稱。如果未指定,將使用您的作業系統使用者名稱。
--password-p表示您想要為指定的帳戶提供密碼。mysql 客戶端會在您按下 Enter 鍵後提示您輸入密碼。
MySQL 資料庫您想要存取的 MySQL 資料庫 名稱。如果未指定,mysql 將連線至伺服器,而不會連線至特定資料庫。

連線至遠端資料庫的基本格式通常如下所示

mysql --host=<hostname> --port=<port> --user=<user> --password <database>

按下 Enter 鍵後,mysql 客戶端將提示您輸入密碼。如果身份驗證成功,將啟動新的互動式 MySQL 工作階段。

舉例來說,我們可以想像要連線至具有以下需求的資料庫

  • 主機名稱:myhost
  • 埠:1234
  • 資料庫:applicationdb
  • 使用者名稱:myapplicationuser
  • 密碼:mypass

使用以下選項呼叫 mysql 將允許您進行身份驗證

mysql --host=myhost --port=1234 --user=myapplicationuser --password applicationdb

按下 Enter 鍵後,系統會提示您輸入密碼,您可以在其中使用 mypass 進行身份驗證。

調整 MySQL 伺服器的身份驗證設定

如果您想要修改規定使用者如何驗證您的 MySQL 執行個體的規則,您可以透過修改伺服器的組態來完成。您可以在這篇文章中找到如何修改 MySQL 的身份驗證設定

結論

在本指南中,我們從客戶端方面介紹了 MySQL 身份驗證。我們示範了如何使用 mysql 命令列客戶端連線至本機和遠端資料庫執行個體。

了解如何連線至各種 MySQL 執行個體是您開始使用資料庫系統時需要了解的第一步。您可能會為了開發而執行不需要任何特殊身份驗證的本機 MySQL 執行個體,但您的預備和生產環境中的資料庫幾乎肯定需要身份驗證。能夠在任一情況下進行身份驗證將使您能夠在不同環境中良好地工作。

常見問題

可以,您可以使用 Python 連線至 MySQL 資料庫。您需要下載 MySQL Python 連接器並使用 connect() 建構函式。

MySQL 在連接器下載完成後提供開發人員指南

可以,您可以使用 Java 連線至 MySQL 資料庫。您需要下載 MySQL Java 連接器。

MySQL 為連接器提供了安裝指南和入門範例。

如果您希望連線至遠端 MySQL 資料庫,則必須提供遠端主機的網路位置,並可能新增一些其他資訊。

可用的身份驗證方法因 MySQL 執行個體的組態而異。但是,最常見的是,您需要提供以下參數進行身份驗證

選項說明
--host=-hMySQL 伺服器的網路主機名稱或 IP 位址
--port-PMySQL 伺服器執行的網路埠。如果伺服器使用埠 3306(預設 MySQL 埠),則可以省略此參數。
--user=-u您要以其身份連線的資料庫使用者名稱。如果未指定,將使用您的作業系統使用者名稱。
--password-p表示您想要為指定的帳戶提供密碼。mysql 客戶端會在您按下 Enter 鍵後提示您輸入密碼。
MySQL 資料庫您想要存取的 MySQL 資料庫名稱。如果未指定,mysql 將連線至伺服器,而不會連線至特定資料庫。

MySQL 可以接受的連線數由 max_connections 變數控制。預設情況下,此值為 151。

如果需要,您可以手動增加此值,並且您的伺服器有足夠的 RAM 來支援增加的連線數。

有幾種方法可以識別 MySQL 資料庫上的連線數。最常見的方法是透過 mysql 命令列。

您可以使用 threads_connected 變數,它會顯示連線數的輸出。

您也可以使用 show processlist 命令,它指示伺服器中執行緒集合目前正在執行的操作。

關於作者
Justin Ellingwood

Justin Ellingwood

Justin 自 2013 年以來一直撰寫關於資料庫、Linux、基礎架構和開發人員工具的文章。他目前與妻子和兩隻兔子住在柏林。他通常不必以第三人稱寫作,這對所有相關方來說都是一種解脫。