重置密码后再次登录仍提示用户被锁
问题现象
某用户连接集群时提示账户被锁,重置用户密码后再次登录,仍提示用户被锁。
1
|
FATAL: The account has been locked. |
原因分析
DWS数据库默认情况下,在连续输入错误密码10次后会锁定该用户(允许输入的错误次数由GUC参数failed_login_attempts(默认值为10)控制,可以参见设置尝试登录失败次数登录DWS管理控制台进行修改)。
当用户重置密码后,重试还是被锁,说明在重置后,有其他用户或者应用又用错误的密码再次尝试连接了10次或failed_login_attempts的设置值,再次导致了用户被锁。
处理方法
- 使用系统管理员dbadmin用户连接数据库,执行以下SQL语句查看系统时间。
1
SELECT now();
查询结果显示当前DWS默认显示的系统时间是UTC时间,即北京时间-8H。
- 执行以下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的客户端一直使用错误的密码进行连接。
- 根据实际业务情况选择以下对应的处理办法:
- 如果确认步骤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。
- 如果确认步骤2查询到的IP地址是某个作业,可以先停止该作业连接,再通过系统管理员dbadmin连接数据库后,使用以下SQL语句解锁该用户。然后调整该作业设置,使用正确的密码进行连接。