MySQL 设置 防止账户被暴力破解

1. 确认版本

执行 SELECT VERSION();,必须为 MySQL 8.0.19 或更高版本。低于此版本(如 8.0.17)不支持该语法。

2. 设置防暴力破解策略

sql 复制代码
ALTER USER '用户名'@'%' 
FAILED_LOGIN_ATTEMPTS 5
PASSWORD_LOCK_TIME 1;
  • FAILED_LOGIN_ATTEMPTS:连续密码错误次数上限(0-32767,0 为关闭)

  • PASSWORD_LOCK_TIME:锁定天数(0-32767,或 UNBOUNDED 表示永久锁定直到手动解锁)

3. 手动解锁(测试或紧急恢复用)

sql 复制代码
ALTER USER '用户名'@'%' ACCOUNT UNLOCK;

执行后失败计数重置,账户恢复可登录状态。

4. 验证锁定状态

sql 复制代码
SELECT user, host, account_locked FROM mysql.user WHERE user = '用户名';

account_locked 为 Y 表示已锁定,N 表示正常。

注意事项

版本硬门槛 :FAILED_LOGIN_ATTEMPTS 和 PASSWORD_LOCK_TIME 在 MySQL 8.0.19 才引入,低版本执行直接报 1064 语法错误。你当前的 8.0.17 不支持。

两个参数必须同时非零:只设其中一个,锁定策略不会生效。

锁定后正确密码也无法登录 :一旦触发锁定,即使输入正确密码也会被拒绝,必须等待锁定时间到期或手动执行 ACCOUNT UNLOCK。

全局重置方式 :重启 MySQL 服务或执行 FLUSH PRIVILEGES 会解锁所有临时锁定账户并重置失败计数。

ACCOUNT UNLOCK 与 UNLOCK 的区别 :ALTER USER ... ACCOUNT UNLOCK 是解除"因失败次数超限导致的临时锁定";而 ALTER USER ... ACCOUNT LOCK/UNLOCK(不带 FAILED_LOGIN_ATTEMPTS)是管理员手动启用/禁用账户,两者场景不同。

低版本替代方案 :若无法升级到 8.0.19+,可在应用层实现登录失败限制(如网关限流、验证码),或安装 CONNECTION_CONTROL 插件(它提供的是递增延迟而非锁定,效果不同)。

相关推荐
ShineWinsu2 小时前
对于Qt:QRadioButton常见属性以及QButtonGroup的解析
数据库·c++·qt·microsoft·gui·qradiobutton·qbuttongroup
测试盐2 小时前
oracle数据库卡顿排查
数据库·oracle
滕州市燕猫虎计算机科技工作室个体工商户2 小时前
MySQL、MVCC、多版本并发控制
数据库·mysql·mvcc·数据库事务
明航咨询-陈老师2 小时前
ITSS运行维护服务能力成熟度认证技术纵深:标准模型、等级路径、2026审核趋势与CS/CMMI对比
服务器·数据库·cmmi
缓慢更新3 小时前
AI 辅助生成单测:从接口定义到用例的流水线
java·服务器·前端·网络·数据库·人工智能
AI小百科4 小时前
向量数据库:AI 的「记忆仓库」是怎么工作的
数据库·人工智能·oracle
煎饼皮皮侠4 小时前
【设计】设计一个Web版数据库管理平台(之七):多数据库类型易扩展
数据库
Nturmoils4 小时前
MongoDB迁移之后,Spring Data 和 Hibernate 各自接哪类请求
数据库
画中有画4 小时前
在自动化脚本中操作本地数据库
数据库·oracle·自动化