mysql修改密码

MySQL 密码修改可通过多种方式实现,不同方法适用于不同版本和场景,以下是综合操作指南:

一、推荐方法:ALTER USER 语句(适用 MySQL 5.7+)

sqlCopy Code
ALTER USER 'username'@'host' IDENTIFIED BY 'new_password'; -- 修改指定用户的密码:ml-citation{ref="1,7" data="citationList"}

操作步骤:

  1. 登录 MySQL:mysql -u root -p(输入当前密码)7
  2. 执行 ALTER USER 语句,例如:
    sqlCopy Code
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!'; -- 修改本地 root 密码:ml-citation{ref="2,7" data="citationList"}
  3. 刷新权限:FLUSH PRIVILEGES;(部分版本可省略,但建议执行)6

注意事项:

  • MySQL 8.0+ 默认使用 caching_sha2_password 插件,需确认兼容性8
  • 若需指定加密方式,可添加 WITH mysql_native_password 参数8

二、传统方法:SET PASSWORD 语句(适用旧版 MySQL)

sqlCopy Code
SET PASSWORD FOR 'username'@'host' = PASSWORD('new_password'); -- MySQL 5.7.6 前支持:ml-citation{ref="1,4" data="citationList"}

限制:

  • PASSWORD() 函数在 MySQL 5.7+ 已弃用,8.0+ 移除16
  • 仅建议用于旧版本维护场景6

三、命令行工具:mysqladmin

bashCopy Code
mysqladmin -u root -p password 'new_password' # 通过旧密码直接修改:ml-citation{ref="3,4" data="citationList"}

步骤:

  1. 输入当前密码验证
  2. 自动完成密码更新,无需登录 MySQL 命令行3

四、直接修改 mysql.user 表(需谨慎操作)

sqlCopy Code
UPDATE mysql.user
SET authentication_string = PASSWORD('new_password') -- MySQL 5.7.6 前使用 password 字段:ml-citation{ref="4,6" data="citationList"}
WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES; -- 必须执行权限刷新:ml-citation{ref="4,6" data="citationList"}

注意事项:

  • MySQL 8.0+ 需使用 authentication_string 字段并生成 SHA2 哈希值68
  • 修改后需重启服务或执行 FLUSH PRIVILEGES46

五、忘记密码时的重置方法(需停机操作)

  1. 停止 MySQL 服务
  2. 启动 MySQL 时跳过权限验证:
    bashCopy Code
    mysqld --skip-grant-tables # Windows/Linux 均适用:ml-citation{ref="4" data="citationList"}
  3. 无密码登录后使用 ALTER USER 或直接修改 mysql.user 表46
  4. 重启服务并验证新密码

六、版本兼容性总结

方法 MySQL 5.7- MySQL 8.0+
ALTER USER ✓(推荐)27 ✓(强制推荐)78
SET PASSWORD ✓(部分弃用)1
直接修改 user 表 ✓(需加密)46 ✓(需 SHA2 哈希)8

最佳实践‌:生产环境优先使用 ALTER USER,避免直接操作系统表;遗忘密码场景需结合 --skip-grant-tables 紧急处理47

阅读剩余
THE END