文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  帳戶鎖定

8.2.20 帳戶鎖定

MySQL 支援使用 ACCOUNT LOCKACCOUNT UNLOCK 子句來鎖定和解除鎖定使用者帳戶,用於 CREATE USERALTER USER 陳述式。

  • CREATE USER 搭配使用時,這些子句會指定新帳戶的初始鎖定狀態。如果缺少任一子句,則會在解除鎖定狀態下建立帳戶。

    如果已啟用 validate_password 元件,則不允許建立沒有密碼的帳戶,即使該帳戶已鎖定也是如此。請參閱 第 8.4.3 節,「密碼驗證元件」

  • ALTER USER 搭配使用時,這些子句會指定現有帳戶的新鎖定狀態。如果缺少任一子句,則帳戶鎖定狀態將保持不變。

    ALTER USER ... UNLOCK 會解除鎖定該陳述式所指定、因登入失敗次數過多而暫時鎖定的任何帳戶。請參閱 第 8.2.15 節,「密碼管理」

帳戶鎖定狀態會記錄在 mysql.user 系統資料表的 account_locked 資料行中。來自 SHOW CREATE USER 的輸出會指出帳戶是否已鎖定或解除鎖定。

如果用戶端嘗試連線至鎖定的帳戶,則嘗試會失敗。伺服器會遞增 Locked_connects 狀態變數,該變數表示嘗試連線至鎖定帳戶的次數,並傳回 ER_ACCOUNT_HAS_BEEN_LOCKED 錯誤,並將訊息寫入錯誤日誌

Access denied for user 'user_name'@'host_name'.
Account is locked.

鎖定帳戶不會影響使用代理使用者連線,而該代理使用者會採用鎖定帳戶的身分。這也不會影響執行具有 DEFINER 屬性(指定鎖定帳戶)的儲存程式或檢視的能力。也就是說,使用代理帳戶或儲存程式或檢視的能力不受鎖定帳戶的影響。

帳戶鎖定功能取決於 mysql.user 系統資料表中是否存在 account_locked 資料行。對於從舊於 5.7.6 的 MySQL 版本升級,請執行 MySQL 升級程序,以確保此資料行存在。請參閱 第 3 章,《升級 MySQL。對於沒有 account_locked 資料行的未升級安裝,伺服器會將所有帳戶視為解除鎖定,而使用 ACCOUNT LOCKACCOUNT UNLOCK 子句會產生錯誤。