我在我的机器上重新安装了macOS Sierra.安装Oracle MySQL社区服务器5.7.15(mysql-5.7.15-osx10.11)后,我试图从控制台停止MySQL服务器.我收到了以下错误“错误!无法找到MySQL服务器PID文件!”.
我自己做了一些研究,但没有设法解决我的问题.
有什么建议?
解决方法:
通过Preferences Pane / launchd启动和停止MySQL服务器,另一方面通过sudo /usr/local/mysql/support-files/mysql.server启动/停止启动和停止MySQL服务器并不真正兼容.
在MySQL安装程序中选择“Launchd Support”后,将创建启动守护程序com.oracle.oss.mysql.mysqld,并且MySQL首选项窗格使用launchd机制来启动和停止mysql.如果启用“启动时自动启动MySQL服务器”,则启动Mac后会自动启用mysqld.
启动守护程序创建的pid文件名与mysql-server脚本创建和期望的名称不兼容.
运行时创建的启动守护程序的pid文件名是mysql.local.pid,该脚本需要一个基于Mac的主机名,.local或计算机名称的名称.
因此要么使用MySQL pref窗格/ launchctl,要么使用脚本来启动和停止mysqld.
在某种程度上,您可以通过修改文件com.oracle.oss.mysql.mysqld来使两个方法兼容:
停止mysql后替换数组
<array>
<string>/usr/local/mysql/bin/mysqld</string>
<string>--user=_mysql</string>
<string>--basedir=/usr/local/mysql</string>
<string>--datadir=/usr/local/mysql/data</string>
<string>--plugin-dir=/usr/local/mysql/lib/plugin</string>
<string>--log-error=/usr/local/mysql/data/mysql.local.err</string>
<string>--pid-file=/usr/local/mysql/data/mysql.local.pid</string>
</array>
通过
<array>
<string>/usr/local/mysql/bin/mysqld</string>
<string>--user=_mysql</string>
<string>--basedir=/usr/local/mysql</string>
<string>--datadir=/usr/local/mysql/data</string>
<string>--plugin-dir=/usr/local/mysql/lib/plugin</string>
<string>--log-error=/usr/local/mysql/data/$name.err</string>
<string>--pid-file=/usr/local/mysql/data/$name.pid</string>
</array>
$name:HostName(例如host.example.com),LocalHostName(例如host.local)或ComputerName(例如host).可能最好的方法是使用主机名.您可以使用scutil –get HostName获取主机名的主机名,或者使用sudo scutil –set HostName your_hostname设置主机名.
您还可以获取实际使用的mysql-server脚本pid的名称 – 在停止启动守护程序并使用mysql-server start启动mysqld之后,通过使用sudo ls /usr/local/mysql / data检查mysql的数据目录.使用在那里找到的名称来调整plist的pid名称.
您可能必须将启动守护程序文件转换为xml才能对其进行编辑.应用程序TextWrangler立即将其打开为xml文件.
之后用launchctl重新加载plist.
现在应该可以使用MySQL pref窗格和mysql.server脚本启动和停止.
如果您启用了“在启动时自动启动MySQL服务器”,则无法使用脚本停止服务器 – 即使在修改了plist之后 – 因为launchd会在几秒钟后覆盖任何停止命令并再次启动mysqld.