M1 Mac Mini升级Mac OS X 11.6后MySQL 8.0.27连接故障求助
问题根因
Mac OS X 11.6 更新调整了/tmp目录的临时文件自动清理规则,会定时删除空闲的套接字文件,刚好和Homebrew版MySQL默认的套接字存放路径冲突;同时系统升级可能篡改了MySQL数据目录的所属权限,导致进程读写异常。
解决步骤
- 清理残留MySQL进程
先停止现有服务、杀掉所有残留进程,避免后续操作冲突:
brew services stop mysql pkill mysqld # 确认无残留进程,有输出的话手动kill对应的pid即可 ps aux | grep mysql
- 修正MySQL配置文件
修改套接字存放路径,避开/tmp目录的清理规则:
- 找到配置文件加载路径:
mysql --help | grep "my.cnf",按输出的优先级顺序选一个存在的配置文件编辑,Homebrew M1版默认路径为/opt/homebrew/etc/my.cnf - 在配置文件中追加如下内容,没有对应块就自行创建:
[mysqld] socket = /opt/homebrew/var/mysql/mysql.sock bind-address = 127.0.0.1 [client] socket = /opt/homebrew/var/mysql/mysql.sock
- 修复数据目录权限
系统升级可能重置了MySQL数据目录的权限,手动修正:
sudo chown -R $(whoami):admin /opt/homebrew/var/mysql/ chmod 755 /opt/homebrew/var/mysql/
- 兼容旧路径调用
创建软链接兼容程序默认读/tmp/mysql.sock的场景:
ln -s /opt/homebrew/var/mysql/mysql.sock /tmp/mysql.sock
- 重启服务验证
brew services start mysql # 等待10秒后测试连接 mysql -u root -p
连接成功后执行show databases;等任意查询语句,确认无断连问题即可。
可选兜底方案
如果按上述操作后仍偶发断连,可修改MySQL的启动plist配置,禁止系统自动回收MySQL进程:
打开/opt/homebrew/Cellar/mysql/8.0.27/homebrew.mxcl.mysql.plist文件,在<dict>块内追加:
<key>KeepAlive</key> <true/>
保存后重启MySQL服务即可。
内容的提问来源于stack exchange,提问作者cunningt
相关产品推荐
相关产品推荐

