You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac环境下MySQL重置root密码遇3306端口冲突求助

Fixing MySQL Root Password Reset Issues on Mac (Port 3306 Conflict + Empty Password Problem)

我之前在Mac上重置MySQL root密码时也踩过一模一样的坑,尤其是端口冲突和空密码提示但无法登录的问题,给你整理了一套分步解决的方案:

先搞定3306端口冲突问题

端口冲突本质是有其他进程(大概率是残留的MySQL进程,或者MAMP这类第三方数据库工具)占着3306端口,先把它清掉:

  • 打开终端,输入命令找到占用3306的进程:
    lsof -i :3306
    
  • 输出里会显示PID列,用这个命令杀掉进程:
    kill -9 <PID>
    
  • 如果是Homebrew安装的MySQL,还可以额外执行确保服务彻底停止:
    brew services stop mysql
    
  • 要是是MAMP这类工具占用,直接关掉对应的应用就行。

解决“root@localhost created with empty password but nothing happens”的问题

这个提示说明你的重置流程没走对,MySQL并没有真正应用空密码(或者你后续没按正确步骤设置新密码),下面分两种常见安装方式给你完整的重置流程:

如果你是用Homebrew装的MySQL

  1. 先彻底停掉所有MySQL相关进程:
    brew services stop mysql
    pkill mysqld
    
  2. 启动MySQL并跳过权限验证(这一步是核心,能让你无密码登录):
    mysqld_safe --skip-grant-tables --skip-networking &
    

    加--skip-networking是为了防止重置过程中被外部连接干扰,更安全。

  3. 无密码登录MySQL:
    mysql -u root
    
  4. 在MySQL命令行里更新root密码(注意MySQL 5.7+用authentication_string字段,旧版本用Password):
    USE mysql;
    -- 针对MySQL 5.7及以上版本
    UPDATE user SET authentication_string = PASSWORD('你的新密码') WHERE User = 'root' AND Host = 'localhost';
    -- 要是你用的是5.6及以下版本,换成这条:
    -- UPDATE user SET Password = PASSWORD('你的新密码') WHERE User = 'root' AND Host = 'localhost';
    FLUSH PRIVILEGES; -- 必须执行这条刷新权限,不然密码不生效
    EXIT;
    
  5. 停掉安全模式的MySQL,重启正常服务:
    pkill mysqld
    brew services start mysql
    

如果你是用官方DMG包安装的MySQL

  1. 先停止MySQL服务:
    • 可以通过系统偏好设置:打开「系统偏好设置」→ 找到MySQL图标 → 点击「Stop MySQL Server」
    • 或者用终端命令:
      sudo /usr/local/mysql/support-files/mysql.server stop
      pkill mysqld
      
  2. 启动跳过权限验证的模式:
    sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables --skip-networking &
    
  3. 无密码登录MySQL:
    /usr/local/mysql/bin/mysql -u root
    
  4. 同样执行更新密码的SQL(和Homebrew版本一样,注意字段区别):
    USE mysql;
    UPDATE user SET authentication_string = PASSWORD('你的新密码') WHERE User = 'root' AND Host = 'localhost';
    FLUSH PRIVILEGES;
    EXIT;
    
  5. 重启正常服务:
    pkill mysqld
    sudo /usr/local/mysql/support-files/mysql.server start
    

几个容易踩的坑要注意

  • 一定要确保所有MySQL进程都被杀死再启动安全模式,不然肯定会端口冲突。
  • MySQL 5.7+不再使用Password字段存储密码,用authentication_string,写错字段的话重置完全无效。
  • 执行完UPDATE命令后,必须执行FLUSH PRIVILEGES;,不然新密码不会立刻生效。

内容的提问来源于stack exchange,提问作者Deepak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:36:55