最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何安全地在MySQL 5.7中修改用户的登录密码?
时间:2026-07-04 10:43:51 编辑:袖梨 来源:一聚教程网
优先选 ALTER USER 而不是 SET PASSWORD,因其在 MySQL 5.7.6+ 中更安全、直接,兼容 validate_password 策略,无需 FLUSH PRIVILEGES,且支持密码过期与账户锁定等精细控制。
能用 ALTER USER 就别碰 SET PASSWORD,它在 MySQL 5.7.6+ 中更安全、更直接,且绕过密码强度校验的风险更低。
为什么优先选 ALTER USER 而不是 SET PASSWORD
MySQL 5.7.6 起官方已明确推荐 ALTER USER,它天然兼容 validate_password 插件的强度策略,执行后立即生效,无需 FLUSH PRIVILEGES;而 SET PASSWORD 必须配合 PASSWORD() 函数,漏写或版本误判(比如当成了 8.0 写法)会直接报 ERROR 1372。另外,ALTER USER 支持一次性设置密码过期、锁定等状态,运维更可控。
-
ALTER USER修改当前用户:ALTER USER USER() IDENTIFIED BY 'NewPass123!'; - 修改指定用户(注意
host必须完全匹配):ALTER USER 'appuser'@'10.0.2.%' IDENTIFIED BY 'NewPass123!'; - 若需禁用密码过期并解锁账户:
ALTER USER 'appuser'@'localhost' IDENTIFIED BY 'NewPass123!' PASSWORD EXPIRE NEVER ACCOUNT UNLOCK;
FLUSH PRIVILEGES 在 ALTER USER 后是否必要
不必要。这是最容易混淆的一点:ALTER USER 是权限系统原生操作,会同步更新内存中的权限缓存,执行成功即刻生效;只有通过直接 UPDATE mysql.user 表修改 authentication_string 字段时,才必须跟 FLUSH PRIVILEGES。误加这句不会报错,但属于冗余操作,还可能掩盖真实问题(比如你改的是 'root'@'127.0.0.1' 却用 'root'@'localhost' 登录,加了 FLUSH 也连不上)。
密码太简单被拒绝?先看 validate_password 策略
MySQL 5.7 默认启用密码强度校验,设一个 123456 会直接报错:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements。不要急着卸载插件,先查当前策略:
SELECT @@validate_password_policy, @@validate_password_length, @@validate_password_mixed_case_count;
临时调低策略(仅限测试环境)可执行:
SET GLOBAL validate_password_policy = LOW;SET GLOBAL validate_password_length = 4;
生产环境建议保留默认策略,用 SELECT VALIDATE_PASSWORD_STRENGTH('YourNewPass!') AS score; 测强度,≥50 才算达标。
改完密码仍连不上?重点检查三处
这不是语法问题,而是 MySQL 认证模型的细节没对齐:
-
host字段必须精确匹配:MySQL 把'user'@'localhost'和'user'@'127.0.0.1'当作两个独立账户,改了一个,另一个仍用旧密码;用SELECT user, host FROM mysql.user WHERE user = 'youruser';确认目标行 - 客户端是否复用旧连接:某些 ORM(如 Django 的
CONN_MAX_AGE)或连接池(如 HikariCP)会保持长连接,新密码只对新建连接生效,需重启应用或清空连接池 - 认证插件是否兼容:虽然 5.7 默认用
mysql_native_password,但如果之前手动切过插件(比如为兼容老客户端),请确认:SELECT plugin FROM mysql.user WHERE user = 'youruser' AND host = 'yourhost';,非mysql_native_password时,显式指定:ALTER USER 'user'@'host' IDENTIFIED WITH mysql_native_password BY 'pass';
真正麻烦的从来不是“怎么改”,而是改完之后——host 匹配、连接复用、插件类型,这三个点漏掉任何一个,都会让你对着登录失败的日志反复怀疑人生。
相关文章
- 高德地图路线规划显示异常怎么办 07-09
- 漫蛙漫画官方版正版ios如何安装 07-09
- 胖东来官网地址-胖东来官方网站入口地址 07-09
- investopedia官网中文版入口-investopedia国内能用的官方网页版入口地址 07-09
- 一点文学txt小说网站入口-一点文学小说官网入口地址2026最新 07-09
- 易校园怎么绑定微信 07-09