在Mac系统中修改MySQL密码是数据库管理中的常见操作,不同版本的MySQL对应的修改方式存在一定差异,用户可以根据自身安装的MySQL版本选择对应的操作方案。

准备工作
在修改密码前,需要先确认当前Mac上安装的MySQL版本,同时停止正在运行的MySQL服务,避免操作过程中出现冲突。可以通过以下命令查看MySQL版本:
# 查看MySQL版本 mysql --version
停止MySQL服务的方式有两种,一种是通过系统偏好设置中的MySQL面板点击停止按钮,另一种是通过终端执行命令:
# 停止MySQL服务 sudo /usr/local/mysql/support-files/mysql.server stop
MySQL 5.7及以下版本修改密码
步骤1:跳过权限验证启动MySQL
首先需要以跳过权限表的方式启动MySQL,这样不需要密码就能直接登录数据库:
# 跳过权限验证启动MySQL sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
执行该命令后,终端会进入等待状态,此时需要新开一个终端窗口进行后续操作。
步骤2:登录MySQL并修改密码
新开终端后,直接输入mysql命令即可登录数据库:
# 登录MySQL /usr/local/mysql/bin/mysql -u root
登录成功后,切换到mysql系统数据库,执行密码修改命令:
-- 切换到mysql数据库
USE mysql;
-- 修改root用户密码,注意MySQL 5.7之前密码字段是Password,5.7是authentication_string
-- MySQL 5.6及以下版本执行
UPDATE user SET Password = PASSWORD('新密码') WHERE User = 'root';
-- MySQL 5.7版本执行
UPDATE user SET authentication_string = PASSWORD('新密码') WHERE User = 'root';
-- 刷新权限
FLUSH PRIVILEGES;
-- 退出MySQL
EXIT;
步骤3:重启MySQL服务
关闭之前跳过权限启动的MySQL进程,然后正常启动MySQL服务:
# 正常启动MySQL服务 sudo /usr/local/mysql/support-files/mysql.server start
之后就可以用新密码登录MySQL验证修改是否成功。
MySQL 8.0及以上版本修改密码
MySQL 8.0版本调整了密码验证规则,不再支持使用PASSWORD()函数,修改密码的方式也有所变化。
方法1:已知原密码修改
如果还记得原来的密码,可以直接登录MySQL后执行修改命令:
-- 登录MySQL mysql -u root -p -- 输入原密码后执行修改命令 ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; -- 刷新权限 FLUSH PRIVILEGES;
方法2:忘记原密码修改
如果忘记了原密码,同样需要先跳过权限验证启动MySQL:
# 跳过权限验证启动MySQL sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
新开终端登录MySQL后,先清空root用户的密码认证字段,再修改密码:
-- 切换到mysql数据库 USE mysql; -- 清空密码字段 UPDATE user SET authentication_string = '' WHERE User = 'root'; -- 刷新权限 FLUSH PRIVILEGES; -- 退出MySQL EXIT;
之后正常重启MySQL服务,用空密码登录后重新设置新密码:
-- 空密码登录 mysql -u root -- 修改密码 ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; -- 刷新权限 FLUSH PRIVILEGES;
注意事项
- 修改密码时尽量使用复杂度较高的密码,包含大小写字母、数字和特殊符号,提升数据库安全性。
- 操作前建议备份重要的数据库数据,避免操作失误导致数据丢失。
- 如果修改密码后无法登录,检查密码是否输入正确,或者是否对应了正确的MySQL版本操作方式。
- MySQL 8.0默认的密码认证插件是
caching_sha2_password,如果客户端不支持该插件,可以在修改密码时指定插件:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';