文档首页/ 数据仓库服务 GaussDB(DWS)/ 故障排除/ 账号/权限/密码/ 重置密码后再次登录仍提示用户被锁
更新时间:2024-07-01 GMT+08:00

重置密码后再次登录仍提示用户被锁

问题现象

某用户连接集群时提示账户被锁,重置用户密码后再次登录,仍提示用户被锁。

1
FATAL: The account has been locked.

原因分析

DWS数据库默认情况下,在连续输入错误密码10次后会锁定该用户(允许输入的错误次数由GUC参数failed_login_attempts(默认值为10)控制,可以参见设置尝试登录失败次数登录DWS管理控制台进行修改)。

当用户重置密码后,重试还是被锁,说明在重置后,有其他用户或者应用又用错误的密码再次尝试连接了10次或failed_login_attempts的设置值,再次导致了用户被锁。

处理方法

  1. 使用系统管理员dbadmin用户连接数据库,执行以下SQL语句查看系统时间。

    1
    SELECT now();
    

    查询结果显示当前DWS默认显示的系统时间是UTC时间,即北京时间-8H。

  2. 执行以下SQL语句查询客户端连接情况。其中,

    • username请替换为实际被锁的用户名。
    • 时间段,请根据实际时间修改。例如要查北京时间当天上午9点到10点这个时间段的连接情况,需由北京时间转为UTC时间,即-8H,则UTC时间为当天上午1点到2点的时间段。
    1
    SELECT * FROM pgxc_query_audit('2022-10-27 01:00:00','2022-10-27 02:00:00') where username='username';
    

    查询结果显示:IP地址为x.x.x.x的客户端一直使用错误的密码进行连接。

  3. 根据实际业务情况选择以下对应的处理办法:

    • 如果确认步骤2查询到的IP地址是某个作业,可以先停止该作业连接,再通过系统管理员dbadmin连接数据库后,使用以下SQL语句解锁该用户。然后调整该作业设置,使用正确的密码进行连接。
      1
      ALTER USER username ACCOUNT UNLOCK;
      
    • 如果不确认该IP地址是哪个作业,可以先参见设置尝试登录失败次数将参数failed_login_attempts修改为0,然后使用以下SQL语句重置一个新密码,此时正在连接的其他作业即使再次输错10次密码也不会被锁定。
      ALTER USER username IDENTIFIED BY '{Password}';

      failed_login_attempts修改为0的方式仅为临时解决方案,为保证数据库安全,不建议failed_login_attempts设置为0。建议后续定位到对应作业后,尽快将作业的连接设置调整为正确密码,继续将failed_login_attempts设置为10。