mac mysql忘记密码了怎么办?手把手教你重置root密码

来源:站长查询作者:桃乃木香奈头衔:网络博主
导读:本期聚焦于桃乃木香奈创作的《mac mysql忘记密码了怎么办?手把手教你重置root密码》,敬请观看详情。MySQL在Mac上装好之后长时间没用,root密码想不起来了,这种情况该怎么找回?本文提供两种亲测可行的解决方案:一种是利用skip-grant-tables参数跳过权限验证进入免密模式,然后直接更新user表里的密码字段;另一种是借助mysqladmin工具配合安全模式完成密码重置。文章详细说明了从停止MySQL服务、修改配置、免密登录到最终改回配置重启验证的完整流程,覆盖Homebrew安装和官方dmg安装两种常见场景,并汇总了操作中容易踩的坑,比如认证插件要选对、flush privileges别漏掉等,照着步骤操作就能顺利找回数据库访问权限。

Mac上装了MySQL之后很久没碰,突然要用的时候发现root密码怎么都想不起来,这种尴尬的情况其实相当常见。好在MySQL提供了官方支持的密码重置途径,只要还能控制本机服务,就不需要卸载重装。下面介绍两种在macOS环境下重置root密码的方法,覆盖Homebrew安装和官方dmg安装两种场景,操作完成后即可用新密码正常登录。

mac mysql忘记密码了怎么办?手把手教你重置root密码

方法一:使用skip-grant-tables跳过权限验证

这是最通用的做法,原理是让MySQL启动时不加载授权表,这样所有用户都能免密登录,再进入系统库直接改密码。整个流程分为停服务、改配置、免密登录、更新密码、恢复配置五个步骤。

首先确认MySQL是怎么安装的。如果是用Homebrew装的,执行brew services list查看服务状态,用brew services stop mysql停止服务;如果是官网dmg包安装的,在系统设置的最底部找到MySQL面板,点击Stop MySQL Server按钮即可。也可以用命令行sudo /usr/local/mysql/support-files/mysql.server stop来停止(不同版本路径可能是/opt/homebrew,视安装位置而定)。

接着以跳过权限的方式启动MySQL。dmg安装的用户可以直接执行:

sudo /usr/local/mysqld-safe --skip-grant-tables --skip-networking &

Homebrew安装的用户则可以通过mysqld_safe --skip-grant-tables &启动,或者临时修改my.cnf配置文件(一般位于/etc/my.cnf或/usr/local/etc/my.cnf),在[mysqld]段落下加一行skip-grant-tables,再正常启动服务。注意--skip-networking参数是为了避免改密码期间有外部连接进来,本机操作不受影响。

服务起来后,直接输入mysql -u root就能免密进入,不需要输入密码。进入后依次执行以下SQL:

-- 刷新权限,让GRANT语句可用
FLUSH PRIVILEGES;

-- 直接更新密码,MySQL 8.0写法
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';

-- MySQL 5.7及以下版本可以改用
-- SET PASSWORD FOR 'root'@'localhost' = PASSWORD('你的新密码');

改完后退出客户端,把之前加的skip-grant-tables配置删掉,重启MySQL服务,再用mysql -u root -p输入新密码登录验证。如果版本是MySQL 8.4,ALTER USER可能被禁用,需要先执行UNLOCK ACCOUNT或改用SET PASSWORD的方式。

方法二:通过init-file自动执行重置语句

如果觉得手动操作麻烦,或者环境里不方便开免密模式,可以用官方文档推荐的init-file方式。思路是写一个包含改密码语句的文本文件,让MySQL启动时自动执行它。

先停止MySQL服务,然后新建一个文件,比如放在家目录下叫reset.sql,内容只有一行:

ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';

接着以指定初始化文件的方式启动服务:

sudo /usr/local/mysqld-safe --init-file=/Users/你的用户名/reset.sql &

等MySQL完全启动后(可以看日志确认),密码就已经被改掉了。此时停掉服务,用正常方式重启,再用新密码登录测试。用完之后记得删除reset.sql文件,因为里面存着明文密码,留在磁盘上有安全隐患。这种方法的好处是全程不需要人工干预客户端交互,适合写进脚本批量处理。

操作中容易踩的坑

重置过程本身不难,但有几个细节经常让人卡住。第一个坑是密码字段的版本差异:网上一些老教程会让人直接UPDATE mysql.user表里的password字段,这在MySQL 5.7之后会报错,因为该字段早已改名为authentication_string。如果一定要用UPDATE方式,语句应该写成UPDATE mysql.user SET authentication_string=PASSWORD('新密码') WHERE User='root',而且只适用于5.7,8.0里PASSWORD函数已经被移除了。

第二个坑是认证插件问题。MySQL 8.0默认使用caching_sha2_password插件,某些老版本的Navicat或客户端连不上。如果重置密码后遇到这类兼容问题,可以在ALTER USER时显式指定插件:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码'

第三个坑是改完密码必须执行FLUSH PRIVILEGES的情况。如果只是用ALTER USER或SET PASSWORD,语句本身会立即生效,可以不刷新;但如果用了UPDATE直接改表,就必须刷新权限,否则重启前都不生效。另外,skip-grant-tables模式下执行GRANT等相关语句前也需要先FLUSH PRIVILEGES加载权限表,否则会报The MySQL server is running with the --skip-grant-tables option错误。

最后提醒一点:如果机器上同时装了多个版本的MySQL,操作前先用which mysqlmysql --version确认当前连接的是哪个实例,改错了实例自然登不上。密码重置成功后,建议立即用新密码创建一个备用管理员账号,并考虑开启Keychain或其他密码管理工具保存,避免下次再陷入同样的窘境。

mac mysql重置密码mysql忘记root密码mysql skip-grant-tables修改时间:2026-09-12 06:56:27

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/20260912/55173.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。