在CentOS系统中更改MySQL密码是数据库管理中的常见操作,无论是出于安全考虑还是密码遗忘,掌握正确的方法都至关重要,本文将详细介绍在CentOS环境下通过不同方式更改MySQL密码的步骤、注意事项以及相关问题的解决方案,确保操作过程安全高效。

准备工作
在开始操作前,需要确认几个关键点:确保已安装MySQL或其分支(如MariaDB),并知道root用户的初始密码(如果是新安装),根据MySQL版本的不同(5.7及以上版本与5.6及以下版本),密码修改命令可能存在差异,建议在操作前备份重要数据,避免意外情况导致数据丢失,通过mysql --version命令可以查看当前安装的MySQL版本,为后续操作提供依据。
通过命令行方式修改密码
使用mysqladmin命令(适用于已知root密码)
如果当前root用户密码已知,可以通过mysqladmin命令直接修改,打开终端,输入以下命令(将新密码替换为实际设置的密码):
mysqladmin -u root -p旧密码 password "新密码"
执行后会提示输入旧密码,验证通过后密码即被修改,此方法适用于MySQL 5.6及以下版本,但在5.7及以上版本中,若未启用validate_password插件,也可正常使用。
通过登录MySQL后修改(适用于忘记root密码)
若忘记root密码,需以安全模式启动MySQL服务,首先停止MySQL服务:
systemctl stop mysqld
然后跳过权限表启动:

mysqld_safe --skip-grant-tables &
使用root用户登录MySQL:
mysql -u root
执行以下命令修改密码(注意MySQL 5.7及以上版本需更新authentication_string字段):
USE mysql;
UPDATE user SET authentication_string=PASSWORD('新密码') WHERE User='root';
FLUSH PRIVILEGES;
EXIT;
最后重启MySQL服务:
systemctl restart mysqld
使用安全脚本修改密码(MySQL 5.7+)
MySQL 5.7及以上版本提供了mysql_secure_installation脚本,可用于初始化安全设置,包括修改root密码,执行以下命令启动脚本:
mysql_secure_installation
根据提示输入当前root密码(若为首次安装可跳过),选择“修改密码”选项并设置新密码,后续可根据需求配置其他安全选项(如移除匿名用户、禁止root远程登录等),此方法操作简单,适合新手用户。

注意事项
- 密码复杂度要求:默认情况下,MySQL可能要求密码包含大小写字母、数字及特殊字符,长度至少8位,若需降低复杂度,可修改
validate_password插件配置:SET GLOBAL validate_password_policy=LOW; SET GLOBAL validate_password_length=6;
- 权限问题:修改密码时需确保当前用户具有
UPDATE权限,否则会报错,可通过GRANT命令授权:GRANT UPDATE ON mysql.user TO 'root'@'localhost';
- 服务重启:部分修改方式需重启MySQL服务才能生效,建议在业务低峰期操作,避免影响服务可用性。
FAQs
问题1:修改密码后无法登录MySQL,提示“Access denied”怎么办?
解答:首先检查密码是否输入正确,注意区分大小写,若确认无误,可能是权限未刷新,执行FLUSH PRIVILEGES;命令,若仍无法解决,检查user表中的Host字段是否为localhost或允许远程登录的IP,可通过SELECT User, Host FROM mysql.user;查看,确保防火墙未阻止3306端口访问。
问题2:如何在CentOS中通过配置文件重置MySQL root密码?
解答:若上述方法均无效,可通过修改配置文件重置密码,编辑MySQL配置文件/etc/my.cnf,在[mysqld]段下添加skip-grant-tables,保存后重启MySQL服务,直接登录MySQL并修改密码,完成后移除该配置行并重启服务,注意此方法会降低安全性,操作完成后务必及时恢复配置。