推荐使用ALTER USER修改密码,适用于MySQL 5.7.6及以上版本,如ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘MyNewPass123!’; 需执行FLUSH PRIVILEGES; 使权限生效。
在 MySQL 中修改用户密码有多种方式,具体方法取决于你的 MySQL 版本和权限情况。以下是几种常用的修改密码的方法。
使用 ALTER USER 命令(推荐,适用于 MySQL 5.7.6 及以上版本)
这是目前最标准的方式,适用于大多数现代 MySQL 版本。
ALTER USER ‘用户名’@’主机’ IDENTIFIED BY ‘新密码’;
例如,修改 root 用户从本地登录的密码:
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘MyNewPass123!’;
执行后运行 FLUSH PRIVILEGES; 确保权限生效。
使用 SET PASSWORD 命令
适用于当前用户或指定用户修改密码。
SET PASSWORD FOR ‘用户名’@’主机’ = PASSWORD(‘新密码’);
注意:在 MySQL 8.0 以后,PASSWORD() 函数已被弃用,应使用:
SET PASSWORD FOR ‘用户名’@’主机’ = ‘新密码’;
例如:
SET PASSWORD FOR ‘devuser’@’%’ = ‘SecurePass2024’;
通过 UPDATE 直接修改 mysql.user 表(不推荐,仅应急使用)
如果无法使用上述命令,可直接更新系统表,但需谨慎操作。
UPDATE mysql.user SET authentication_string = PASSWORD(‘新密码’) WHERE User = ‘用户名’ AND Host = ‘主机’;
MySQL 8.0+ 使用:
UPDATE mysql.user SET authentication_string = CONCAT(‘*’, UPPER(SHA1(UNHEX(SHA1(‘新密码’))))) WHERE User = ‘用户名’ AND Host = ‘主机’;
完成后必须执行:
FLUSH PRIVILEGES;
此方法容易出错,建议优先使用 ALTER USER。
忘记 root 密码时的重置方法
若忘记 root 密码,可按以下步骤重置:
1. 停止 MySQL 服务:
sudo systemctl stop mysql 2. 启动 MySQL 并跳过权限验证:
mysqld_safe –skip-grant-tables & 3. 登录 MySQL:
mysql -u root 4. 执行修改密码命令(根据版本选择 ALTER USER 或 UPDATE) 5. 重启 MySQL 服务恢复正常模式
基本上就这些。日常操作推荐使用 ALTER USER,安全且兼容性好。修改密码后记得测试登录是否正常。