macOS使用启动守护进程来自动启动、停止和管理流程和应用程序,比如MySQL。
默认情况下,安装包(DMG) macOS安装launchd文件命名/图书馆/ LaunchDaemons / com.oracle.oss.mysql.mysqld.plist
包含plist定义类似于:
< ?xml version = " 1.0 " encoding = " utf - 8 " ?> < !DOCTYPE plist公共”——/ /苹果电脑/ / DTD plist 1.0 / / EN " " http://www.apple.com/DTDs/PropertyList-1.0.dtd " > < plist version = " 1.0 " > < dict > <键>标签< /关键> <字符串> com.oracle.oss.mysql。mysqld ProcessType Interactive Disabled RunAtLoad KeepAlive SessionCreate LaunchOnlyOnce UserName _mysql GroupName _mysql ExitTimeOut 600 Program /usr/local/mysql/bin/mysqld ProgramArguments /usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid --keyring-file-data=/usr/local/mysql/keyring/keyring --early-plugin-load=keyring_file=keyring_file.so WorkingDirectory /usr/local/mysql
一些用户报告,添加一个plist DOCTYPE声明导致launchd操作失败,尽管它将线头检查。我们怀疑这是一个copy-n-paste错误。一个文件的md5校验和包含上面的代码片段d925f05f6d1b6ee5ce5451b596d6baed。
要启用launchd服务,您可以:
打开macOS系统偏好和选择MySQL首选项面板,然后执行
。的实例页面包括一个选项来启动或停止MySQL 再现了
数据/
目录中。 卸载MySQL服务器和MySQL首选项面板和launchd信息。或者,手动加载launchd文件。
壳> cd /图书馆/ LaunchDaemons壳> sudo - f com.oracle.oss.mysql.mysqld.plist launchctl负载
在启动配置MySQL自动启动,您可以:
壳> sudo - w com.oracle.oss.mysql.mysqld.plist launchctl负载
将MySQL服务器升级时,launchd安装过程删除旧的创业项目,安装MySQL服务器5.7.7和下面。
升级还取代现有launchd文件命名com.oracle.oss.mysql.mysqld.plist
。
额外的launchd相关信息:
plist条目覆盖
my.cnf
条目,因为它们是作为命令行参数传入。额外的信息传递程序选项,请参阅指定程序选项。的ProgramArguments部分定义了传递给程序的命令行选项,它是
mysqld
二进制在这种情况下。默认的plist定义是用不那么复杂的用例。对于更复杂的设置,您可能需要删除的一些参数,而是依靠一个MySQL配置文件,例如
my.cnf
。如果你编辑plist文件,那么取消重新安装或升级时MySQL安装程序选项。否则,您的编辑plist文件覆盖,所有编辑都输了。
因为默认的plist定义定义了一些ProgramArguments,你可能会删除这些参数,而是依靠你my.cnf
MySQL配置文件来定义。例如:
< ?xml version = " 1.0 " encoding = " utf - 8 " ?> < !DOCTYPE plist公共”——/ /苹果电脑/ / DTD plist 1.0 / / EN " " http://www.apple.com/DTDs/PropertyList-1.0.dtd " > < plist version = " 1.0 " > < dict > <键>标签< /关键> <字符串> com.oracle.oss.mysql。mysqld ProcessType Interactive Disabled RunAtLoad KeepAlive SessionCreate LaunchOnlyOnce UserName _mysql GroupName _mysql ExitTimeOut 600 Program /usr/local/mysql/bin/mysqld ProgramArguments /usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid --keyring-file-data=/usr/local/mysql/keyring/keyring --early-plugin-load=keyring_file=keyring_file.so WorkingDirectory /usr/local/mysql
在这种情况下,basedir
,datadir
,plugin_dir
,log_error
,pid_file
,keyring_file_data
,——early-plugin-load
选择删除从默认的plistProgramArguments定义,你可能中定义my.cnf
代替。