MySQL账户锁定功能可以通过配置插件和设置密码策略来实现,主要用于防止暴力破解和多次错误登录尝试。从MySQL 5.7.17版本开始,系统支持通过password_locking机制自动锁定账户。以下是具体配置方法。
启用账户锁定插件
MySQL使用locking_password_plugin(旧版本为password_policy相关插件)来管理账户锁定。需要确保该插件已加载:
查看插件是否启用:SELECT PLUGIN_NAME, PLUGIN_STATUS FROM information_schema.PLUGINS WHERE PLUGIN_NAME LIKE '%locking%'; 若未启用,在配置文件中添加(通常为 my.cnf 或 my.ini):
plugin-load-add=locking_pwdfreq.so(Linux)
plugin-load-add=locking_pwdfreq.dll(Windows) 重启MySQL服务使插件生效。
设置账户失败登录次数和锁定时间
通过修改用户属性来配置连续失败登录次数及锁定时长:
创建用户时设置示例:CREATE USER 'testuser'@'localhost'
IDENTIFIED BY 'password'
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LOCK_TIME 1; 修改已有用户:
ALTER USER 'testuser'@'localhost'
FAILED_LOGIN_ATTEMPTS 5
PASSWORD_LOCK_TIME 2;
FAILED_LOGIN_ATTEMPTS:允许连续失败的登录次数(1-999)。
PASSWORD_LOCK_TIME:账户被锁定的天数(可为小数,如0.5表示12小时)。
验证账户锁定状态
当账户被锁定后,可通过以下方式检查:
查询用户状态:SELECT user, host, account_locked, failed_login_attempts FROM mysql.user WHERE user = 'testuser'; 查看错误日志,确认是否有“Too many failed login attempts”提示。
手动解锁账户
如果用户被锁定,可通过管理员账户执行:
ALTER USER 'testuser'@'localhost' ACCOUNT UNLOCK; 也可在配置中临时禁用锁定策略进行调试。基本上就这些。只要启用对应插件并合理设置失败尝试次数与锁定时间,就能有效防止恶意登录。注意版本兼容性,推荐使用MySQL 8.0+以获得更完善的密码管理支持。
