在 MySQL 中修改用户密码,主要取决于你使用的 MySQL 版本(5.7 与 8.0+ 差异较大),以及你当前是否拥有管理员权限。最常用且推荐的方式是使用
ALTER USER语句,安全、标准、兼容性好。
使用 ALTER USER 修改密码(推荐,MySQL 5.7.6+)
这是官方推荐方式,适用于有
CREATE USER或
UPDATE权限的用户(如 root)。 登录 MySQL:`mysql -u root -p` 执行命令(以修改用户 'testuser'@'localhost' 为例):
ALTER USER 'testuser'@'localhost' IDENTIFIED BY 'NewPass123!';立即生效,无需刷新权限;但若修改的是当前登录用户,下次登录需用新密码
使用 SET PASSWORD 修改密码(兼容旧版本)
适用于 MySQL 5.7 及更早版本,8.0 仍支持但已不推荐。
语法示例:SET PASSWORD FOR 'testuser'@'localhost' = 'NewPass123!';注意:MySQL 8.0+ 中该语句要求密码必须用
PASSWORD()函数加密(已弃用),或直接传明文(需开启老式认证插件),易出错,建议优先用
ALTER USER
忘记 root 密码时的重置方法(Linux/macOS)
适用于无法登录、需跳过权限验证重置 root 密码的情况:
停止 MySQL 服务:sudo systemctl stop mysqld(或
mysqld_safe) 以跳过权限表方式启动:
sudo mysqld_safe --skip-grant-tables --skip-networking &另开终端登录:
mysql -u root(无需密码) 执行更新(MySQL 8.0+):
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewRootPass123!';重启正常 MySQL 服务
检查并确认用户认证插件(避免登录失败)
MySQL 8.0 默认使用
caching_sha2_password插件,部分客户端不兼容,可能导致改密后无法登录: 查看用户插件:
SELECT user, host, plugin FROM mysql.user WHERE user='testuser';如需兼容老客户端,可同时指定插件:
ALTER USER 'testuser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NewPass123!';
