我有一个运行OSX 10.9的2013年中期MBA。
每次启动时启动的过程为mysqld。我相信它来自我安装的旧版本MySQL(通过AMPPS)。然后,我安装了MAMP Pro,这两个过程之间经常发生冲突。每次我关闭并重新启动Mac时,我都必须找到mysqld正在运行的进程(在活动监视器上),退出它,然后启动MAMP(通过终端命令:/Application/MAMP/bin/startMysql.sh无法在其他任何地方运行)。
所以我想知道如何mysqld在每次启动时都禁用它。
我有一个运行OSX 10.9的2013年中期MBA。
每次启动时启动的过程为mysqld。我相信它来自我安装的旧版本MySQL(通过AMPPS)。然后,我安装了MAMP Pro,这两个过程之间经常发生冲突。每次我关闭并重新启动Mac时,我都必须找到mysqld正在运行的进程(在活动监视器上),退出它,然后启动MAMP(通过终端命令:/Application/MAMP/bin/startMysql.sh无法在其他任何地方运行)。
所以我想知道如何mysqld在每次启动时都禁用它。
Answers:
打开终端,然后:
sudo launchctl list | grep -i mysql
launchctl remove xxx.xxx.mysql
第一个命令的输出中包括“ xxx.xxx”,例如“ org.macports.mysql”。“ sudo”命令的密码是您自己的用户帐户的密码。
的确,不需要sudo来“列出”,但是因为您已经为第一个命令提供了sudo密码,所以它会在会话内存中存储一会儿,而第二个命令(特权)则不需要。否则,只需在第一个命令上跳过sudo,然后在第二个命令上使用它。剥皮猫的方法不止一种。
sudo launchctl list | grep -i mysql没有结果。sudo launchctl list | grep -i mysqld i.imgur.com/WZ5EVjw.png
如果先前安装的MySQL版本源自SUN / Oracle站点上的MySQL Community Downloads页面,则可能launchd与mysqld进程启动无关。出于某种原因,与MySQL一起分发的启动脚本使用了已弃用的“启动项”技术来在启动时启动进程。实际上,甚至当前的二进制发行版(5.6.15)都mysqld使用StartupItems在OS X上启动服务器(?!)
启动冲突版本的MySQL的启动脚本很可能位于/Library/StartupItems/MYSQLCOM/MYSQLCOM。在启动时,该启动项将检查位于的文件,/etc/hostconfig以确定“ MYSQLCOM”变量的设置是否设置为“ -YES-”。如果是这样,启动脚本将启动mysqld。
它应该可以通过修改线禁用的MySQL的启动/etc/hostconfig,指定MYSQLCOM=-YES-说MYSQLCOM=-NO-(这应该在下次启动时禁用启动过程)。
您可以mysqld通过执行以下命令来终止当前正在运行的实例:
sudo /Library/StartupItems/MYSQLCOM/MYSQLCOM stop
要永久禁用错误 mysqld进程的启动,应该可以首先使用上述命令停止守护程序,然后使用以下命令删除MySQL启动项:
sudo rm -rf /Library/StartupItems/MYSQLCOM
注意:您还可能在/Library/PreferencePanes/MySQL.prefpane或处安装了MySQL Preference Pane ~/Library/PreferencePanes/MySQL.prefpane。
sudo /Library/StartupItems/MYSQLCOM/MYSQLCOM stop产量没有什么可以:i.imgur.com/ukHtW5x.png
以下为我工作,8.0.12使用Homebrew在以下位置安装了mysql macOS Mojave 10.14.1:
rm -rf ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
重命名mysqld(或移动/备份/删除),然后重新启动并查找尝试启动不再可用的程序的启动项的错误消息,可能会更容易。
其他答案似乎涵盖了寻找启动代理和启动守护程序以及跟踪PID的方法,这通常不适用于守护程序,因为它们的父PID通常为1。
另外,由于Mavericks并未随附mysql,因此您应该能够跟踪所选的安装软件包,或mdfind mysqld用来查找将数据库带到Mac的软件包,然后找到该mysql软件包的卸载/禁用说明。如果您已经在其中安装了启动软件的控件,则还需要查看系统偏好设置。
mdfind mysqld不会显示任何与AMPPS相关的MySQL文件,而仅显示与MAMP相关的文件(以及我安装的MySQL程序(如MySQL Workbench)中的一些其他文件)
首先找出启动MySQL的父进程是什么。从终端运行ps命令,以了解该过程是什么;您可以使用-j或-l列出父ID ppid。因此,这将向您显示:
$ ps -axjc | grep mysql
第一列是您的用户ID,第二列是进程ID,第三列是父ID。
如果父ID为1,则它将由根启动守护程序启动,这可能意味着它来自LaunchDaemons或StartupItems之一。如果它来自一个不是1的进程,而是一个已启动的进程,则可能是LaunchAgents或在您的系统登录项中。
root 1 0 1 0 0 Ss ?? 4:49.10 launchd
alblue 257 1 257 0 0 Ss ?? 0:16.29 launchd
_spotlight 415 1 415 0 0 Ss ?? 0:00.94 launchd
因此,进程1是由系统启动启动的,父进程为1的任何东西都来自系统守护程序。父进程为257的任何内容(在这种情况下)都将从LaunchAgents或LoginItems之一启动。
请记住,启动守护程序或启动项的名称不一定在标题中带有“ mysql”-它可能已由其他程序或登录项运行(因此,仅通过名称搜索可能找不到它) 。找到启动它的内容后,您也许可以找到它的来源。
ps以跟踪父进程并查看开始了mysqld什么?