如何在启动时禁用MySQL?


10

我有一个运行OSX 10.9的2013年中期MBA。

每次启动时启动的过程为mysqld。我相信它来自我安装的旧版本MySQL(通过AMPPS)。然后,我安装了MAMP Pro,这两个过程之间经常发生冲突。每次我关闭并重新启动Mac时,我都必须找到mysqld正在运行的进程(在活动监视器上),退出它,然后启动MAMP(通过终端命令:/Application/MAMP/bin/startMysql.sh无法在其他任何地方运行)。

所以我想知道如何mysqld在每次启动时都禁用它。


您是否可以运行ps以跟踪父进程并查看开始了mysqld什么?
bmike

让我们看看是否有人有更多针对性的信息。跟踪过程并从终端中杀死它们不是最容易编写的。您可以从“活动监视器”中获取相同的信息-选择mysql-然后选择“ info”,然后查找父进程。
bmike

1
超级用户可能提供的有用答案:superuser.com/a/334622
Mikey TK

不确定这是否有帮助,因为它适用于启动时启动的应用程序,但是请查看“系统偏好设置” >>“用户和组” >>“登录”元素。您将找到启动时启动的应用程序。
FeliceM 2013年

您确定它是AMPPS而非启动时运行的MAMP。重新启动计算机,然后输入“ ps -Awww | 终端中的grep mysql”。这至少应该告诉您正在运行哪个可执行文件。
MJ Walsh 2013年

Answers:


10

打开终端,然后:

sudo launchctl list | grep -i mysql

launchctl remove xxx.xxx.mysql

第一个命令的输出中包括“ xxx.xxx”,例如“ org.macports.mysql”。“ sudo”命令的密码是您自己的用户帐户的密码。

的确,不需要sudo来“列出”,但是因为您已经为第一个命令提供了sudo密码,所以它会在会话内存中存储一​​会儿,而第二个命令(特权)则不需要。否则,只需在第一个命令上跳过sudo,然后在第二个命令上使用它。剥皮猫的方法不止一种。


2
sudo launchctl list | grep -i mysql没有结果。sudo launchctl list | grep -i mysqld i.imgur.com/WZ5EVjw.png
Zaki Aziz

您可以使用AMPPS管理面板来禁用AMPPS MySQL守护程序。或者更好的是,因为您现在已经安装了另一个框架,所以只需完全卸载AMPPS。
user64759 2013年

我已经卸载了AMPPS,但仍然遇到此问题。
Zaki Aziz 2013年

3

如果先前安装的MySQL版本源自SUN / Oracle站点上的MySQL Community Downloads页面,则可能launchdmysqld进程启动无关。出于某种原因,与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


不幸的是,我的/ etc / hostconfig文件中没有与MySQL相关的任何内容:i.imgur.com/3C2jxPZ.png
Zaki Aziz

sudo /Library/StartupItems/MYSQLCOM/MYSQLCOM stop产量没有什么可以:i.imgur.com/ukHtW5x.png
扎基·阿齐兹


1

重命名mysqld(或移动/备份/删除),然后重新启动并查找尝试启动不再可用的程序的启动项的错误消息,可能会更容易。

其他答案似乎涵盖了寻找启动代理和启动守护程序以及跟踪PID的方法,这通常不适用于守护程序,因为它们的父PID通常为1。

另外,由于Mavericks并未随附mysql,因此您应该能够跟踪所选的安装软件包,或mdfind mysqld用来查找将数据库带到Mac的软件包,然后找到该mysql软件包的卸载/禁用说明。如果您已经在其中安装了启动软件的控件,则还需要查看系统偏好设置。


mdfind mysqld不会显示任何与AMPPS相关的MySQL文件,而仅显示与MAMP相关的文件(以及我安装的MySQL程序(如MySQL Workbench)中的一些其他文件)
Zaki Aziz 2014年

1

首先找出启动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”-它可能已由其他程序或登录项运行(因此,仅通过名称搜索可能找不到它) 。找到启动它的内容后,您也许可以找到它的来源。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.