MySQL 5.6.51执行ACCOUNT LOCK语句报1064语法错误如何解决
问题原因
ACCOUNT LOCK 账号锁定语法是从 MySQL 5.7.6 版本才正式引入的,你当前使用的 MySQL 5.6.51 版本不支持该语法,执行时就会抛出1064语法错误。
解决方法
MySQL 5.6 没有提供原生的账号锁定能力,可通过以下两种等效方案实现禁止账号登录使用的效果:
- 方案1:回收目标用户的所有权限,同时重置为一个无规律的随机强密码,让账号无法正常登录、也没有任何数据库操作权限
执行命令参考:-- 回收该用户的所有权限和授权权限 REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user_name'@'localhost'; -- 刷新权限使回收操作生效 FLUSH PRIVILEGES; -- 替换下方字符串为自行生成的随机长密码,确保无人知晓该密码 SET PASSWORD FOR 'user_name'@'localhost' = PASSWORD('aX9%kL2$pQ7!zR3_sdW8'); - 方案2:直接修改系统权限表,强制该用户认证失败,彻底阻断登录
执行命令参考:-- 将用户密码置空同时标记密码过期,让所有登录请求直接认证失败 UPDATE mysql.user SET Password = PASSWORD(''), password_expired = 'Y' WHERE User = 'user_name' AND Host = 'localhost'; -- 刷新权限使表修改生效 FLUSH PRIVILEGES;
注意:只要是直接修改mysql库下系统表的操作,执行完成后都必须运行
FLUSH PRIVILEGES;,否则配置不会立即生效。
如果后续将数据库升级到MySQL 5.7.6及以上版本,就可以直接使用你最初编写的ALTER USER 'user_name'@'localhost' ACCOUNT LOCK;语句完成账号锁定操作。
内容的提问来源于stack exchange,提问作者Curtis Chiron
相关产品推荐
相关产品推荐

