MacOS使用启动守护程序自动启动,停止和管理MySQL等进程和应用程序。
默认情况下,macOS上的安装包(DMG)会安装名为/library/launchdaemons/com.oracle.oss.mysql.mysqld.plist.
包含类似于以下plist的定义:
< ?xml version = " 1.0 " encoding = " utf - 8 " ?> < !DOCTYPE plist PUBLIC "-//Apple Computer//DTD plist 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> Label com.oracle.os .mysql. txt "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声明导致启动操作失败,尽管它传递了棉绒检查。我们怀疑它是一种复制-n粘贴错误。包含上述片段的文件的MD5校验和D925F05F6D1B6EE5CE5451B596D6AD.。
要启用launchd服务,您可以:
打开MacOS系统首选项,然后选择MySQL首选项面板,然后执行
。的实例页面包含一个启动或停止MySQL的选项,并且 重建
数据/
目录中。 卸载MySQL服务器和可选的MySQL首选项面板和启动信息。或者,手动加载Launchd文件。
cd /Library/LaunchDaemons shell> sudo launchctl load -F com.oracle.os .mysql.mysqld.plist
要将MySQL配置为自动启动,可以:
Shell > sudo launchctl load -w com.oracle.oss.mysql.mysqld.plist
当升级MySQL服务器时,launchd安装过程会删除MySQL服务器5.7.7及以下安装的旧启动项。
升级还将替换现有的名为com.oracle.oss.mysql.mysqld.plist
。
额外的发布相关信息:
plist条目覆盖
my.cnf
条目,因为它们是作为命令行参数传入的。有关传入程序选项的其他信息,请参见第4.2.2节,“指定程序选项”。的程序说法节定义传递到程序中的命令行选项,即
mysqld.
在这种情况下二进制。默认plist定义是在编写时考虑到不太复杂的用例。对于更复杂的设置,您可能希望删除一些参数,而依赖于MySQL配置文件,例如
my.cnf
。如果编辑Plist文件,请在重新安装或升级MySQL时取消选中Installer选项。否则,覆盖了编辑的Plist文件,所有编辑都丢失。
因为默认的Plist定义定义了几个程序说法,您可能会删除大多数这些参数,而是依赖于您的my.cnf
MySQL配置文件要定义它们。例如:
< ?xml version = " 1.0 " encoding = " utf - 8 " ?> < !DOCTYPE plist PUBLIC "-//Apple Computer//DTD plist 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> Label com.oracle.os .mysql. txt "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
选项已从默认的Plist中删除程序说法定义,你可能已经定义过了my.cnf
代替。