MySQL 9.3 Reference Manual Including MySQL NDB Cluster 9.3
MySQL supports locking and unlocking user accounts using the
ACCOUNT LOCK
and ACCOUNT
UNLOCK
clauses for the CREATE
USER
and ALTER USER
statements:
When used with CREATE USER
,
these clauses specify the initial locking state for a new
account. In the absence of either clause, the account is
created in an unlocked state.
If the validate_password
component is
enabled, creating an account without a password is not
permitted, even if the account is locked. See
Section 8.4.3, “The Password Validation Component”.
When used with ALTER USER
,
these clauses specify the new locking state for an existing
account. In the absence of either clause, the account locking
state remains unchanged.
ALTER USER ...
UNLOCK
unlocks any account named by the statement
that is temporarily locked due to too many failed logins. See
Section 8.2.15, “Password Management”.
Account locking state is recorded in the
account_locked
column of the
mysql.user
system table. The output from
SHOW CREATE USER
indicates whether
an account is locked or unlocked.
If a client attempts to connect to a locked account, the attempt
fails. The server increments the
Locked_connects
status variable
that indicates the number of attempts to connect to a locked
account, returns an
ER_ACCOUNT_HAS_BEEN_LOCKED
error,
and writes a message to the error log:
Access denied for user 'user_name
'@'host_name
'. Account is locked.
Locking an account does not affect being able to connect using a
proxy user that assumes the identity of the locked account. It
also does not affect the ability to execute stored programs or
views that have a DEFINER
attribute naming the
locked account. That is, the ability to use a proxied account or
stored programs or views is not affected by locking the account.
The account-locking capability depends on the presence of the
account_locked
column in the
mysql.user
system table. For upgrades from
MySQL versions older than 5.7.6, perform the MySQL upgrade
procedure to ensure that this column exists. See
Chapter 3, Upgrading MySQL. For nonupgraded installations that
have no account_locked
column, the server
treats all accounts as unlocked, and using the ACCOUNT
LOCK
or ACCOUNT UNLOCK
clauses
produces an error.