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
資料庫中資料表的定義來規避它是無效的。除非透過第 3 章,升級 MySQL中描述的程序,否則您絕不應以任何方式變更
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()
等效的功能,可用來取代。請查閱連接器文件。上述注意事項不適用於
ucs2
、utf16
和utf32
,這些不允許作為用戶端字元集。
MySQL 安裝程序會使用初始的 root
帳戶填入授權表,如第 2.9.4 節「保護初始 MySQL 帳戶」中所述,其中也討論了如何為其指派密碼。此後,您通常會使用諸如 CREATE USER
、DROP USER
、GRANT
和 REVOKE
等陳述式來設定、修改和移除 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 伺服器」。