升级MacOS High Sierra 10.13.4后本地MySQL无法正常启动求助
我之前也碰到过MacOS升级后MySQL莫名罢工的情况,结合你的描述,给你几个针对性的排查和解决步骤,应该能搞定:
1. 先搞定目录权限问题(最常见的元凶)
MacOS系统升级后经常会重置/usr/local/var/mysql目录的权限,MySQL进程没权限写PID文件和日志,自然启动几秒就闪退:
- 先彻底杀掉所有MySQL相关进程:
sudo killall mysqld - 给数据库目录赋予正确的属主权限:
sudo chown -R _mysql:_mysql /usr/local/var/mysql - 然后再尝试启动:
mysql.server start
2. 检查my.cnf配置文件是否异常
系统升级可能会干扰配置文件的读取,或者配置项本身有问题:
- 先查看MySQL读取配置的优先级:
mysql --help | grep my.cnf,会列出几个可能的配置文件路径 - 打开对应路径的
my.cnf(比如/usr/local/etc/my.cnf),重点检查这几个项:socket = /tmp/mysql.sock确保和你报错里的socket路径完全一致pid-file = /usr/local/var/mysql/My-MacBook-Pro.local.pid确认PID文件的路径和名称和你看到的一致- 另外检查
datadir是否指向正确的数据库存储目录,避免路径错误
3. 查看真实的错误日志(别盯着那个空的.err文件)
你提到的同名.err文件是空的,大概率是MySQL还没来得及写入日志就崩溃了,咱们手动指定日志路径来抓详细错误:
- 直接用mysqld命令启动并指定日志:
mysqld --log-error=/usr/local/var/mysql/debug.log - 运行后打开
debug.log,里面会有具体的崩溃原因,比如某张表损坏、内存不足、系统库依赖冲突之类的细节
4. 修复可能损坏的数据库表
如果升级过程中MySQL被强制关闭,很容易导致数据库表损坏,这时候需要修复:
- 先以安全模式启动MySQL:
mysqld_safe --skip-grant-tables & - 然后运行全库检查和修复命令:
mysqlcheck --all-databases --repair - 修复完成后重启服务:
mysql.server restart
5. 排查系统完整性保护(SIP)的限制
MacOS的SIP有时候会限制MySQL的底层操作,你可以临时关闭测试下(测试完记得重新开启):
- 重启Mac,按住
Command+R进入恢复模式 - 打开终端,执行
csrutil disable,然后重启系统 - 尝试启动MySQL,如果能正常运行,说明是SIP的问题,你可以把MySQL相关目录加入SIP白名单,或者重新启用SIP后再调整权限
内容的提问来源于stack exchange,提问作者MGS
相关产品推荐
相关产品推荐

