mysql如何修改密码_mysql修改用户密码的几种方式

推荐使用ALTER USER修改MySQL密码,如ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!'; MySQL 8.0中SET PASSWORD需用SET PASSWORD FOR 'user'@'host' = 'password'; mysqladmin工具适用于命令行操作;直接更新mysql.user表仅用于忘记密码等紧急情况,操作前应备份权限信息。

在使用 MySQL 数据库时,修改用户密码是常见的管理操作。无论是出于安全考虑还是账户管理需要,掌握多种修改密码的方法非常实用。以下是几种常用的 MySQL 修改用户密码的方式,适用于不同版本和使用场景。

1. 使用 ALTER USER 命令(推荐方式,MySQL 5.7.6+)

从 MySQL 5.7.6 开始,官方推荐使用 ALTER USER 语句来修改用户密码,语法清晰且安全性高。

ALTER USER '用户名'@'主机' IDENTIFIED BY '新密码';

示例:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!';

执行后需运行 FLUSH PRIVILEGES; 刷新权限,但 ALTER USER 会自动刷新,无需手动操作。

2. 使用 SET PASSWORD 命令

该方法适用于当前登录用户修改自己的密码,或管理员为其他用户设置密码。

SET PASSWORD FOR '用户名'@'主机' = PASSWORD('新密码');

注意:在 MySQL 8.0 中,PASSWORD() 函数已被弃用,应使用如下格式:

SET PASSWORD FOR '用户名'@'主机' = '新密码';

示例:

SET PASSWORD FOR 'demo'@'%' = 'SecurePass456';

3. 使用 mysqladmin 工具(命令行方式)

在操作系统命令行中,可以使用 mysqladmin 工具修改密码,适合脚本化操作。

mysqladmin -u 用户名 -p password "新密码"

说明:执行后会提示输入旧密码,验证通过后设置新密码。例如:

mysqladmin -u root -p password "MyNewRootPass"

4. 直接更新 mysql.user 表(不推荐,仅应急使用)

在特殊情况下(如忘记 root 密码),可通过跳过权限检查进入数据库,然后直接修改 user 表。

步骤如下:

  • 停止 MySQL 服务
  • 启动时添加 --skip-grant-tables 参数
  • 登录 MySQL 并执行:
UPDATE mysql.user SET authentication_string = PASSWORD('新密码') WHERE User = 'root' AND Host = 'localhost';

MySQL 8.0+ 使用:

ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
  • 执行 FLUSH PRIVILEGES;
  • 重启 MySQL 服务(去掉 skip-grant-tables)

基本上就这些常用方法。日常管理推荐使用 ALTER USER,安全又简洁。紧急情况再考虑修改系统表。操作前建议备份用户权限信息,避免误操作导致无法登录。