1、前言
记得之前安装mysql5.7的时候,是可以直接从设置里面的mysql面板启动的,但是到了mysql8.0之后就启动不了了,这个问题不知道是版本问题还是我换了m系列芯片的mysql导致的,之前很多次都启动不了,这次搞了下,竟然弄到可以自启动了,那就记录一下。
2、相关知识
2.1、mysql的安装位置

  mysql使用dmg安装是带版本信息的,为了消除路径的差异,会软链接到/usr/local/mysql路径,如下所示:
❯ cd /usr/local
❯ ll
total 0
drwxr-xr-x  43 root  wheel   1.3K 10 28 09:33 bin
drwxr-xr-x   6 root  wheel   192B  7  2  2023 include
drwxr-xr-x   5 root  wheel   160B 10 27 22:31 lib
drwxr-xr-x   3 root  wheel    96B  9 27  2022 logs
lrwxr-xr-x   1 root  wheel    25B  1 28 19:51 mysql -> mysql-8.3.0-macos14-arm64
drwxr-xr-x  13 root  wheel   416B  1 28 20:02 mysql-8.3.0-macos14-arm64
drwxr-xr-x   4 root  wheel   128B  1 17  2023 sbin
drwxr-xr-x   4 root  wheel   128B 10 27 22:31 share
drwxr-xr-x   3 root  wheel    96B  9 27  2022 work
2.2、mysql启动文件
  mysql启动不知道什么原因在设置面板的mysql设置也启动不起来,/usr/local/mysql/bin路径是mysql执行文件的位置,/usr/local/mysql/support-files文件查有mysql.server文件可以启动mysql.
2.3、mysql启动命令
1、使用mysqld启动:
sudo /usr/local/mysql/bin/mysqld
他会提示你去看root身份手动启动mysql的文档
 2、使用mysql_safe启动:
sudo /usr/local/mysql/bin/mysqld_safe
但是这个方式启动不能ctrl+c退出启动
 停止只能通过:
sudo /usr/local/mysql/bin/mysqladmin -u root -p你的密码 shutdown
3、使用mysql.server启动:
sudo /usr/local/mysql/support-files/mysql.server start
停止用:
sudo /usr/local/mysql/support-files/mysql.server stop
4、使用launchctl load启动
sudo launchctl load -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
停止也可以使用:
sudo /usr/local/mysql/bin/mysqladmin -u root -p你的密码 shutdown
2.4、错误日志打印
下面知识我本机的位置,你自己去对应目录找相应后缀的文件
tail -200f /usr/local/mysql/data/hitvzdeMacBook-Pro.local.err
2.5、查看是否启动mysql
ps -ef|grep "mysql"
3、mysql自启动设置
设置面板还是点击不了,所以这里只能使用命令了。
 设置自启动:
sudo launchctl load -w /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
我第一次尝试的时候,报了个错,但是还是启动了。
 报错如下:
Load failed: 5: Input/output error
Try running `launchctl bootstrap` as root for richer errors.
删除自启动:
sudo launchctl unload -w /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
删除自启动后,mysql会自动停止。
查询mysql是否在启动列表:
launchctl list|grep "mysql"
参考文章:2.4.3 Installing and Using the MySQL Launch Daemon
 参考博客:launchctl :MAC 下的定时任务