文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man 頁面 (TGZ) - 258.2Kb
Man 頁面 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  帳戶使用者名稱和密碼

8.2.1 帳戶使用者名稱和密碼

MySQL 將帳戶儲存在 mysql 系統資料庫的 user 資料表中。帳戶是根據使用者名稱和使用者可以連線至伺服器的用戶端主機或多個主機來定義。如需 user 資料表中帳戶表示法的相關資訊,請參閱第 8.2.3 節「授權表」

帳戶也可能具有驗證憑證,例如密碼。憑證由帳戶驗證外掛程式處理。MySQL 支援多個驗證外掛程式。其中一些外掛程式使用內建的驗證方法,而其他外掛程式則允許使用外部驗證方法進行驗證。請參閱第 8.2.17 節「可插拔驗證」

MySQL 使用使用者名稱和密碼的方式與您的作業系統使用的方式之間存在一些區別

  • 使用者名稱,如 MySQL 用於驗證目的,與 Windows 或 Unix 使用的使用者名稱(登入名稱)無關。在 Unix 上,大多數 MySQL 用戶端預設會嘗試使用目前的 Unix 使用者名稱作為 MySQL 使用者名稱登入,但這只是為了方便。預設值可以輕鬆覆寫,因為用戶端程式允許使用 -u--user 選項來指定任何使用者名稱。這表示任何人都可以嘗試使用任何使用者名稱連線至伺服器,因此除非所有 MySQL 帳戶都設定密碼,否則您無法以任何方式保護資料庫的安全性。任何指定沒有密碼之帳戶的使用者名稱的人都可以成功連線至伺服器。

  • MySQL 使用者名稱最多為 32 個字元。作業系統使用者名稱可能具有不同的最大長度。

    警告

    MySQL 使用者名稱長度限制在 MySQL 伺服器和用戶端中是硬式編碼的,嘗試修改 mysql 資料庫中表格的定義來規避此限制無效

    您絕對不應以任何方式變更 mysql 資料庫中表格的結構,除非透過第 3 章「升級 MySQL中所述的程序。嘗試以任何其他方式重新定義 MySQL 系統資料表會導致未定義和不受支援的行為。伺服器可以自由忽略因這類修改而變得格式錯誤的列。

  • 為了驗證使用內建驗證方法的帳戶的用戶端連線,伺服器會使用儲存在 user 資料表中的密碼。這些密碼與登入您作業系統的密碼不同。您用來登入 Windows 或 Unix 機器的外部密碼,與您用來存取該機器上的 MySQL 伺服器的密碼之間,沒有必然的關聯。

    如果伺服器使用其他外掛程式驗證用戶端,則外掛程式實作的驗證方法可能會或可能不會使用儲存在 user 資料表中的密碼。在這種情況下,也有可能使用外部密碼來驗證 MySQL 伺服器。

  • 儲存在 user 資料表中的密碼會使用特定於外掛程式的演算法進行加密。

  • 如果使用者名稱和密碼僅包含 ASCII 字元,則無論字元集設定如何,都可以連線到伺服器。若要在使用使用者名稱或密碼包含非 ASCII 字元時啟用連線,用戶端應用程式應使用 MYSQL_SET_CHARSET_NAME 選項和適當的字元集名稱作為引數呼叫 mysql_options() C API 函式。這會導致使用指定的字元集進行驗證。否則,除非伺服器預設字元集與驗證預設值中的編碼相同,否則驗證會失敗。

    標準 MySQL 用戶端程式支援 --default-character-set 選項,該選項會導致如上所述呼叫 mysql_options()。此外,還支援字元集自動偵測,如第 12.4 節「連線字元集和校對」所述。對於使用不是基於 C API 的連接器的程式,連接器可能會提供與 mysql_options() 等效的功能,可改用。請查看連接器文件。

    先前的說明不適用於 ucs2utf16utf32,這些不允許作為用戶端字元集。

MySQL 安裝程序會使用初始 root 帳戶來填入授權資料表,如第 2.9.4 節「保護初始 MySQL 帳戶」所述,該節也討論如何為其指派密碼。此後,您通常會使用諸如 CREATE USERDROP USERGRANTREVOKE 之類的陳述式來設定、修改和移除 MySQL 帳戶。請參閱第 8.2.8 節「新增帳戶、指派權限和刪除帳戶」第 15.7.1 節「帳戶管理陳述式」

若要使用命令列用戶端連線到 MySQL 伺服器,請根據您要使用的帳戶指定必要的使用者名稱和密碼選項

$> mysql --user=finley --password db_name

如果您偏好短選項,命令會看起來像這樣

$> mysql -u finley -p db_name

如果在命令列上省略 --password-p 選項後面的密碼值(如剛才所示),用戶端會提示輸入密碼。或者,可以在命令列上指定密碼

$> mysql --user=finley --password=password db_name
$> mysql -u finley -ppassword db_name

如果您使用 -p 選項,則 -p 和後面的密碼值之間不得有空格

在命令列上指定密碼應視為不安全。請參閱第 8.1.2.1 節「密碼安全性的終端使用者指南」。若要避免在命令列上提供密碼,請使用選項檔案或登入路徑檔案。請參閱第 6.2.2.2 節「使用選項檔案」第 6.6.7 節「mysql_config_editor — MySQL 設定公用程式」

如需有關指定使用者名稱、密碼和其他連線參數的其他資訊,請參閱第 6.2.4 節「使用命令選項連線到 MySQL 伺服器」