MySQL Error number: 3118; Symbol: ER_ACCOUNT_HAS_BEEN_LOCKED; SQLSTATE: HY000

文档解释

Error number: 3118; Symbol: ER_ACCOUNT_HAS_BEEN_LOCKED; SQLSTATE: HY000

Message: Access denied for user ‘%s’@’%s’. Account is locked.

错误说明

ER_ACCOUNT_HAS_BEEN_LOCKED错误(错误号3118)是MySQL中常见的访问权限错误。发生此错误的原因是用户尝试以一个锁定的MySQL用户账户连接。MySQL可以通过管理员账户将其他用户账户锁定,以防止其访问数据库资源。

常见案例

ER_ACCOUNT_HAS_BEEN_LOCKED错误在MySQL数据库环境中很常见,尤其是当管理员担心出现未经允许的访问时,这种错误就会频繁发生。另一种情况是当MySQL安装完成后,默认用户帐户可能被锁定,其结果是MySQL无法以管理员帐户登录,MySQL会显示ER_ACCOUNT_HAS_BEEN_LOCKED错误。

解决方法

要解决ER_ACCOUNT_HAS_BEEN_LOCKED错误,首先需要确认哪一个MySQL用户账户被锁定了,然后再使用root权限登录MySQL,执行“unlock account”语句来取消用户账户的锁定状态,取消锁定的操作格式如下:

UNLOCK ACCOUNTS [FOR user [@’host_name’]];

运行此语句后,用户就可以正常登录MySQL了。

此外,也可以使用MySQL提供的指令来更改被锁定用户账户的密码,首先使用root用户执行以下SET PASSWORD语句来更改密码:

SET PASSWORD FOR ‘user’@’host_name’=PASSWORD(‘new_password’);

执行此语句后,用户就可以以新的密码登录MySQL了。

管理员还可以锁定MySQL用户的账户,这将阻止用户访问数据库资源,以及为某些安全原因而暂时阻止用户访问MySQL资源。锁定用户账户的操作语句如下:

LOCK ACCOUNT FOR user [@’host_name’] [FOR {NONE | READ | WRITE | ALL}];

在新账户被锁定之后,用户将无法以该数据库帐户登录MySQL服务器,直到管理员取消账户锁定,才能继续使用该账户访问MySQL服务器资源。

你可能感兴趣的