簡介
在使用 MySQL 資料庫時,首先需要考慮的是如何連線和與資料庫例項進行互動。這需要資料庫客戶端(你用來與資料庫互動的元件)和資料庫伺服器(儲存、組織和提供資料訪問的實際 MySQL 例項)之間的協調。
因此,你需要了解如何透過提供所需資訊進行認證以作為客戶端連線。在本指南中,我們將介紹如何使用原生的 mysql 命令列客戶端 連線到 MySQL 資料庫——這是與資料庫例項互動最常見和最有用的方式之一。
在另一篇配套指南中,你可以瞭解如何 配置 MySQL 的認證以滿足你的專案需求。建議閱讀這兩篇指南,以更全面地瞭解 MySQL 中認證的工作原理。
關於 mysql 客戶端的基本資訊
mysql 客戶端是 MySQL 的預設命令列客戶端和 SQL shell。你可以使用它以互動方式啟動與伺服器的 shell 會話,也可以向其提供 SQL 檔案以在沒有使用者互動的情況下執行。它在實現配置選項和設定環境時特別有用。在開發程式將使用的訪問模式時,互動式探索和即席查詢也是其強項。
連線和 認證 MySQL 伺服器的方式取決於你的伺服器配置。在以下部分,我們將介紹一些基本的連線選項。為了清晰起見,我們將區分本地連線和遠端連線
- 本地連線:客戶端和 MySQL 例項位於同一伺服器上的連線
- 遠端連線:客戶端連線到執行在不同計算機上的網路可訪問 MySQL 例項
讓我們從連線到同一臺計算機上的資料庫開始。
使用 mysql 連線到本地資料庫
在沒有任何引數的情況下,mysql 命令會嘗試連線到 Unix 套接字檔案 以訪問本地資料庫。通常,預設的套接字檔案位置由配置檔案或編譯時預設值確定。預設情況下,你的作業系統使用者名稱將用於嘗試連線到資料庫。
因此,如果你的當前使用者是本地資料庫上的有效 MySQL 使用者,你可以嘗試輸入以下內容進行連線
mysql
如果賬戶存在且不需要密碼,或者為該賬戶配置了 MySQL 套接字認證,你將自動登入。如果 MySQL 中不存在該使用者名稱,或者需要密碼或其他認證,則該命令將失敗。
要控制 mysql 嘗試登入資料庫的方式,請使用命令列選項在命令中傳遞額外資訊
--user=<username>或-u <username>:指定用於認證的 MySQL 使用者名稱。--password或-p:告訴 MySQL 提示輸入 MySQL 使用者的密碼。--host=127.0.0.1或-h 127.0.0.1:告訴mysql使用本地 TCP 迴環地址而非 Unix 套接字連線到本地 MySQL 例項。如果你的 MySQL 伺服器未配置使用 Unix 套接字,則此選項非常重要。
注意: MySQL 對 127.0.0.1 的解釋與對 localhost 的解釋不同。指定 127.0.0.1 表示你希望使用 TCP 連線,而 localhost 將使 MySQL 嘗試使用 Unix 套接字連線到本地資料庫。
因此,如果你需要以 MySQL 使用者 eva 身份登入並使用密碼,但仍使用 Unix 套接字連線,你可以輸入
mysql --user=eva --password
mysql 客戶端將提示你輸入賬戶密碼。
如果你想嘗試以相同使用者名稱透過 TCP 連線登入到本地資料庫,你將輸入
mysql --user=eva --password --host=127.0.0.1
預設的認證配置以及初始管理使用者名稱和密碼可能因 MySQL 的安裝方式而異。然而,許多方法都會設定 MySQL 使用 Unix 套接字幷包含一個預設的 root 使用者作為管理賬戶。
在這些情況下,你可以透過輸入以下內容以 root 使用者身份登入資料庫
mysql --user=root --password
系統將提示你輸入安裝期間選擇或生成的管理密碼以繼續。
所有這些方法都允許你連線到本地 MySQL 資料庫。
連線到遠端資料庫
如果你希望連線到遠端 MySQL 資料庫,你將需要提供遠端主機的網路位置,並可能新增一些額外資訊。
可用的認證方法根據 MySQL 例項的配置而異。但最常見的是,你需要提供以下引數進行認證
| 選項 | 描述 |
|---|---|
--host= 或 -h | MySQL 伺服器的網路主機名或 IP 地址。 |
--port= 或 -P | MySQL 伺服器執行的網路埠。如果伺服器使用的是預設的 MySQL 埠 3306,則此引數可以省略。 |
--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
按下回車鍵後,系統會提示你輸入密碼,你可以用 mypass 進行認證。
調整 MySQL 伺服器的認證配置
如果你想修改決定使用者如何認證到 MySQL 例項的規則,你可以透過修改伺服器配置來實現。你可以在本文中瞭解如何修改 MySQL 的認證配置。
結論
在本指南中,我們介紹了客戶端的 MySQL 認證。我們演示瞭如何使用 mysql 命令列客戶端連線到本地和遠端資料庫例項。
瞭解如何連線到各種 MySQL 例項是你開始使用資料庫系統時需要理解的第一步。你可能執行一個不需要特殊認證的本地 MySQL 開發例項,但你在預生產和生產環境中的資料庫幾乎肯定需要認證。無論哪種情況,能夠進行認證都將使你能夠在不同環境中良好地工作。
常見問題
是的,你可以使用 Python 連線到 MySQL 資料庫。你需要下載 MySQL Python 聯結器並使用 connect() 建構函式。
聯結器下載後,MySQL 提供了一份開發者指南。
是的,你可以使用 Java 連線到 MySQL 資料庫。你需要下載 MySQL Java 聯結器。
MySQL 提供了一份聯結器安裝指南和入門示例。
如果你希望連線到遠端 MySQL 資料庫,你將需要提供遠端主機的網路位置,並可能新增一些額外資訊。
可用的認證方法根據 MySQL 例項的配置而異。但最常見的是,你需要提供以下引數進行認證
| 選項 | 描述 |
|---|---|
--host= 或 -h | MySQL 伺服器的網路主機名或 IP 地址 |
--port 或 -P | MySQL 伺服器執行的網路埠。如果伺服器使用的是預設的 MySQL 埠 3306,則此引數可以省略。 |
--user= 或 -u | 你希望連線的資料庫使用者名稱。如果未指定,將使用你的作業系統使用者名稱。 |
--password 或 -p | 表示你希望為指定賬戶提供密碼。mysql 客戶端在你按下 Enter 後將提示你輸入密碼。 |
| MySQL 資料庫 | 你想要訪問的 MySQL 資料庫名稱。如果未指定,mysql 將連線到伺服器,但不連線到特定的資料庫。 |
MySQL 可以接受的連線數由 max_connections 變數控制。預設情況下,此值為 151。
如果需要,並且你的伺服器有足夠的 RAM 來支援增加的連線,你可以手動增加此值。
有幾種方法可以識別 MySQL 資料庫上的連線數。最常見的方法是透過 mysql 命令列。
你可以使用 threads_connected 變數,它會顯示連線數。
你還可以使用 show processlist 命令,該命令指示伺服器內正在執行的執行緒集當前正在執行的操作。
