记录一次mac安装mysql启动报错问题Unable to lock ./ibdata1 error: 35。首先,这是第一次在公司新领的mac上面去安装mysql,在去年换新电脑之前,老电脑也安装过,没出现过这种问题。其次,自己的几台windows笔记本也安装过,也没出现过这样的问题。
目录
一、mysql首次安装后启动报错
二、查看报错日志
三、问题排查和修复
四、总结
如果你也是跟我一样的问题,而你又不想了解我的排查过程,可以直接跳转到总结查看问题解决方式。
一、mysql首次安装后启动报错
安装的mysql最新版,安装后,查看mysql版本,没问题:
mysql -V
然后,我使用如下命令启动mysql:
sudo mysql.server start
同时,注意到当启动mysql时,有个err的log生成到了data目录下:
.Logging to '/usr/local/mysql/data/appledeMacBook-Pro-2.local.err'.
等.......走完后,最后是报错如下:
ERROR! The server quit without updating PID file (/usr/local/mysql/data/appledeMacBook-Pro-2.local.pid).
如下图所示:
二、查看报错日志
看到这个问题,一脸懵逼。首先,先去查看报错的log,xxxx.local.err,结果打开data文件夹时发现没有权限,如下:
修改data目录的访问权限:
sudo chmod -R 777 /usr/local/mysql/data/
打开data目录下的err文件,查看log信息:
三、问题排查和修复
首先,我们看到有这么一个warning:
Setting lower_case_table_names=2 because file system for /usr/local/mysql/data/ is case insensitive
翻译一下:
设置lower_case_table_names=2,因为/usr/local/mysql/data/的文件系统不区分大小写。
去哪里设置这个lower_case_table_names=2呢?前往/usr/local/etc目录,看是否有my.cnf这么个文件,如果没有就新建,然后输入lower_case_table_names=2,保存。
重新启动mysql,仍然报一样的错,所以说上面的warning并不是导致该问题的原因:
所以,我们需要看下这个error:
无法锁定./ibdata1,error35,35代表资源临时不可用。查了一下,说是这个文件可能被其他的mysql进程打开了。于是,先看下当前是否有mysql进程在运行:
ps -eaf | grep mysql
发现真有个83661的进程在运行,执行
sudo kill -9 83661
再次grep发现还是存在,只不过换了个id。重点来了,执行如下命令:
sudo launchctl unload -w /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
然后启动mysql,成功:
四、总结
最后总结下,如果你在mac遇到了mysql启动不了的情况(尤其可能是首次安装后启动),遇到了Unable to lock ./ibdata1 error: 35的报错,那么执行 sudo launchctl unload -w /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist 命令,再次启动mysql就可以了。