MySQL作为常用的关系型数据库,密码管理是运维和使用过程中的基础操作。无论是主动修改密码还是忘记密码后重置,都需要按照正确的流程操作,避免影响数据库的正常访问。

常规修改MySQL密码的方法
方法一:使用ALTER USER语句修改(MySQL 5.7及以上版本推荐)
如果当前可以正常登录MySQL,且拥有足够的权限,推荐使用ALTER USER语句修改密码,这种方式语法规范,兼容性更好。
首先登录MySQL:
-- 登录MySQL,输入当前密码 mysql -u root -p
登录成功后执行修改密码的命令:
-- 修改root用户的密码,新密码为NewPass123 ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123'; -- 刷新权限使修改生效 FLUSH PRIVILEGES;
方法二:使用SET PASSWORD语句修改
也可以通过SET PASSWORD语句修改密码,这种方式同样适用于已登录且有对应权限的场景。
-- 登录后执行,修改当前登录用户的密码
SET PASSWORD = PASSWORD('NewPass123');
-- 如果是修改其他用户的密码,需要指定用户名
SET PASSWORD FOR 'test_user'@'localhost' = PASSWORD('TestPass456');
FLUSH PRIVILEGES;
方法三:直接修改user表(兼容低版本MySQL)
对于MySQL 5.6及以下的低版本,也可以通过直接修改mysql库的user表来修改密码,不过这种方式不推荐在新版本中使用。
-- 登录后切换到mysql库
USE mysql;
-- 更新root用户的密码,低版本密码字段为Password
UPDATE user SET Password = PASSWORD('NewPass123') WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
忘记MySQL密码的重置方法
如果忘记MySQL的登录密码,无法通过上述常规方式修改,需要通过跳过权限验证的方式重置密码,不同操作系统的操作流程略有差异。
Linux系统下重置忘记的MySQL密码
首先停止正在运行的MySQL服务:
-- 不同Linux发行版停止服务的命令可能不同 systemctl stop mysqld -- 或者使用service命令 service mysqld stop
然后以跳过权限验证的方式启动MySQL:
-- 启动MySQL并跳过权限表加载 mysqld_safe --skip-grant-tables &
此时不需要密码就可以直接登录MySQL:
-- 无密码登录
mysql -u root
-- 切换到mysql库
USE mysql;
-- 修改root用户密码,MySQL 5.7及以上版本密码字段为authentication_string
UPDATE user SET authentication_string = PASSWORD('NewPass123') WHERE User = 'root' AND Host = 'localhost';
-- 如果是低版本MySQL,使用下面的语句
-- UPDATE user SET Password = PASSWORD('NewPass123') WHERE User = 'root' AND Host = 'localhost';
-- 刷新权限
FLUSH PRIVILEGES;
-- 退出MySQL
EXIT;
之后停止跳过权限的MySQL进程,重新正常启动服务:
-- 停止mysqld进程 killall mysqld -- 正常启动MySQL服务 systemctl start mysqld
Windows系统下重置忘记的MySQL密码
首先停止MySQL服务,可以通过服务管理器或者命令行操作:
-- 停止MySQL服务,服务名根据实际安装情况调整,通常为mysql或者MySQL57 net stop mysql
打开命令提示符,切换到MySQL的安装目录的bin文件夹下,执行跳过权限验证的启动命令:
-- 跳过权限验证启动MySQL mysqld --skip-grant-tables
保持当前窗口运行,再打开一个新的命令提示符窗口,直接登录MySQL:
-- 无密码登录
mysql -u root
-- 切换到mysql库
USE mysql;
-- 修改密码,根据版本选择对应的语句
UPDATE user SET authentication_string = PASSWORD('NewPass123') WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
EXIT;
回到第一个命令提示符窗口,按Ctrl+C停止MySQL进程,然后正常启动MySQL服务:
net start mysql
注意事项
- 修改密码后要及时刷新权限,否则修改可能不会立即生效。
- 密码设置要符合复杂度要求,避免过于简单导致安全风险。
- 重置忘记密码时,操作完成后一定要正常重启MySQL服务,否则权限验证仍然处于跳过状态,会有严重的安全隐患。
- 如果是生产环境的数据库,操作前建议先备份相关数据,避免操作失误导致数据丢失。