macOS 10.14系统下MySQL 8.0.27关闭后无法启动如何解决?
问题描述
我确认此问题与其他现有问题不重复。
- 操作系统:macOS 10.14
- MySQL版本:8.0.27
问题背景
数月前安装运行过MySQL服务器,之后未使用。今日重新使用时可正常通过mysql命令连接服务器执行查询,执行mysqladmin shutdown -uroot关闭服务器后,无法再次启动。
已尝试的无效方案
尝试1:运行mysqld命令
执行后报错如下,启动失败:
$ mysqld 2021-11-17T07:45:07.200232Z 0 [System] [MY-010116] [Server] /usr/local/mysql-8.0.27-macos11-x86_64/bin/mysqld (mysqld 8.0.27) starting as process 3006 2021-11-17T07:45:07.203326Z 0 [Warning] [MY-010091] [Server] Can't create test file /usr/local/mysql-8.0.27-macos11-x86_64/data/mysqld_tmp_file_case_insensitive_test.lower-test 2021-11-17T07:45:07.203335Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /usr/local/mysql-8.0.27-macos11-x86_64/data/ is case insensitive 2021-11-17T07:45:07.203422Z 0 [ERROR] [MY-013276] [Server] Failed to set datadir to '/usr/local/mysql-8.0.27-macos11-x86_64/data/' (OS errno: 2 - No such file or directory) 2021-11-17T07:45:07.203485Z 0 [ERROR] [MY-010119] [Server] Aborting 2021-11-17T07:45:07.203680Z 0 [System] [MY-010910] [Server] /usr/local/mysql-8.0.27-macos11-x86_64/bin/mysqld: Shutdown complete (mysqld 8.0.27) MySQL Community Server - GPL.
尝试2:运行mysqld_safe命令
执行后报错如下,启动失败:
$ mysqld_safe /usr/local/mysql/bin/mysqld_safe: line 653: /usr/local/mysql/data/LSiMac.local.err: No such file or directory Logging to '/usr/local/mysql/data/LSiMac.local.err'. 2021-11-17T07:46:34.6NZ mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data /usr/local/mysql/bin/mysqld_safe: line 144: /usr/local/mysql/data/LSiMac.local.err: No such file or directory /usr/local/mysql/bin/mysqld_safe: line 199: /usr/local/mysql/data/LSiMac.local.err: No such file or directory /usr/local/mysql/bin/mysqld_safe: line 916: /usr/local/mysql/data/LSiMac.local.err: No such file or directory 2021-11-17T07:46:34.6NZ mysqld_safe mysqld from pid file /usr/local/mysql/data/LSiMac.local.pid ended /usr/local/mysql/bin/mysqld_safe: line 144: /usr/local/mysql/data/LSiMac.local.err: No such file or directory
尝试3:运行mysql.server start命令
/usr/local/mysql/bin路径下不存在mysql.server文件,无法执行。
尝试4:重启电脑
重启后执行上述所有命令,问题依旧存在。
尝试5:完全重装MySQL
使用以下命令完全卸载后两次重装,问题未解决:
sudo rm /usr/local/mysql sudo rm -rf /usr/local/mysql* sudo rm -rf /Library/StartupItems/MySQLCOM sudo rm -rf /Library/PreferencePanes/My* rm -rf ~/Library/PreferencePanes/My* sudo rm -rf /Library/Receipts/mysql* sudo rm -rf /Library/Receipts/MySQL* sudo rm -rf /private/var/db/receipts/*mysql*
尝试6:通过MySQL偏好设置面板启动
操作后无效果,此前该功能可正常使用。
异常现象
活动监视器中mysqld进程反复启动又被杀死,疑似存在两个进程分别控制启动和终止。
解决方案
从报错信息判断核心问题是MySQL进程没有对应数据目录的读写权限,且手动启动时未使用正确权限身份执行命令,按以下步骤操作即可解决:
- 终止后台反复重启的mysqld进程
执行以下命令停止系统级别的MySQL自启服务,避免进程反复被拉起:
sudo launchctl unload /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
- 创建并授权MySQL数据目录
默认MySQL 8.0在macOS下的数据目录为/usr/local/mysql/data,如果目录不存在先手动创建,再将目录所有权赋给MySQL专属的_mysql用户组:
sudo mkdir -p /usr/local/mysql/data sudo chown -R _mysql:_mysql /usr/local/mysql/data
- 初始化数据库(仅首次创建数据目录后执行)
如果之前的数据已经丢失,执行初始化命令生成系统表和初始root密码,执行后注意终端输出的初始密码,后续登录需要用到:
sudo mysqld --initialize --user=_mysql
- 启动MySQL服务
通过系统launchd服务启动,后续开机也会自动运行:
sudo launchctl load /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
如果需要手动临时启动,可以用以下命令:
sudo mysqld_safe --user=_mysql &
- 验证启动状态
执行ps aux | grep mysqld查看进程是否正常运行,正常启动后即可通过mysql -uroot -p命令连接服务。
内容的提问来源于stack exchange,提问作者Shuai Li
相关产品推荐
相关产品推荐

