外观
密码重置(root权限)
约 377 字大约 1 分钟
2025-06-19
方法一:通过 skip-grant-tables 重置
步骤 1:修改 MySQL 配置文件
编辑配置文件 /etc/my.cnf(Linux)或 my.ini(Windows),在 [mysqld] 段下添加一行:
skip-grant-tables步骤 2:重启 MySQL 服务
# Linux
service mysqld restart
# 或
systemctl restart mysqld
# Windows
net stop mysql
net start mysql步骤 3:登录 MySQL
mysql -uroot -p输入密码时直接回车即可进入。
步骤 4:修改密码
MySQL 5.7 及以下版本:
USE mysql;
UPDATE user SET PASSWORD = PASSWORD('new_password') WHERE USER = 'root';
FLUSH PRIVILEGES;MySQL 8.0 及以上版本:
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;步骤 5:恢复配置
- 注释或删除
my.cnf中的skip-grant-tables - 重启 MySQL 服务
service mysqld restart新密码即可生效。
方法二:使用 mysqladmin(已知旧密码)
# 修改当前用户密码
mysqladmin -u root -p old_password new_password
# 修改指定用户密码
mysqladmin -u username -p old_password new_password方法三:MySQL 8.0+ 专用方式
MySQL 8.0 引入了 caching_sha2_password 认证插件,推荐使用以下方式:
-- 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
-- 如果需要使用旧版认证插件
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';常见问题
Q:修改密码时报
Unknown column 'password' in 'field list'?
A:MySQL 8.0 已将 password 字段替换为 authentication_string,请使用 ALTER USER 语句。
Q:修改后仍然无法登录?
A:检查 my.cnf 中是否正确移除了 skip-grant-tables,并确认 MySQL 服务已重启。
