在linux服务器运维场景中,mysql数据库密码遗忘是较为常见的问题,尤其是长期未登录的测试环境或者交接不完整的服务器,很容易出现root密码丢失的情况。下面介绍通用的解决方法,适用于大多数mysql版本。

操作步骤
1. 停止mysql服务
首先需要根据服务器的服务管理工具停止mysql服务,不同linux发行版命令略有差异。
# 使用systemctl管理的系统(如CentOS 7+、Ubuntu 16+) sudo systemctl stop mysqld # 使用service管理的系统(如CentOS 6、Ubuntu 14等) sudo service mysql stop
2. 跳过权限表启动mysql
跳过权限表启动后,不需要密码就能直接登录mysql,这是重置密码的核心步骤。
# 后台启动mysql,跳过权限验证 sudo mysqld_safe --skip-grant-tables &
启动后可以通过ps aux | grep mysqld确认进程是否正常运行。
3. 无密码登录mysql并修改密码
此时直接输入mysql命令即可登录,不需要输入密码。
# 登录mysql mysql
登录后切换到mysql系统库,执行密码修改操作,不同版本的修改语句有区别:
-- mysql 5.7及以下版本
USE mysql;
UPDATE user SET authentication_string = PASSWORD('new_password') WHERE User = 'root';
FLUSH PRIVILEGES;
-- mysql 8.0及以上版本
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';
FLUSH PRIVILEGES;
注意将new_password替换成你要设置的新密码,密码建议包含大小写字母、数字和特殊字符,提升安全性。
4. 重启mysql服务
修改完成后需要先结束刚才跳权限启动的mysql进程,再正常启动服务。
# 查找mysqld进程并结束 sudo pkill mysqld # 正常启动mysql服务 # systemctl方式 sudo systemctl start mysqld # service方式 sudo service mysql start
5. 验证新密码
使用新设置的密码登录mysql,确认密码修改成功。
mysql -u root -p # 输入新设置的密码,能正常登录即表示修改成功
注意事项
- 操作前建议备份mysql的数据目录,避免操作失误导致数据丢失。
- 跳过权限表启动期间,mysql服务没有任何权限验证,建议暂时关闭服务器的对外网络访问,避免被恶意入侵。
- 如果是mysql 8.0版本,修改密码时如果提示密码策略不符合要求,可以先调整密码策略再重新设置。
- 操作完成后务必确认mysql服务正常启动,且业务连接能正常使用新密码访问数据库。
mysqllinux_serverpassword_resetskip_grant_tables修改时间:2026-07-15 10:15:10