起動時にMySQLが起動しないようにするにはどうすればよいですか?


10

OSX 10.9を実行している2013年半ばのMBAがあります。

起動ごとに開始されるプロセスはmysqldです。私がインストールした古いバージョンのMySQLからのものだと思います(AMPPSを介して)。次にMAMP Proをインストールしましたが、これら2つのプロセス間で競合が発生することがよくあります。Macをシャットダウンして再起動するたびに、mysqld(アクティビティモニターで)実行中のプロセスを見つけて終了し、MAMPを起動する必要があります(ターミナルコマンドを使用:/Application/MAMP/bin/startMysql.sh他の場所からは動作しません)。

だから私はどのようにmysqld起動時にこれを実行しないようにできるのか疑問に思っています。


ps親プロセスを追跡して何が始まっているmysqldかを確認するために実行できますか?
bmike

誰かがより的を絞った情報を持っているかどうか見てみましょう。プロセスを追跡してターミナルから強制終了することは、書くのが最も簡単ではありません。アクティビティモニターから同じ情報を取得できます。[mysql]を選択してから[info]を選択し、親プロセスを探します。
bmike


これは、起動時に起動されるアプリケーション用であるため、これが役立つかどうかはわかりませんが、[システム環境設定]> [ユーザーとグループ]> [ログイン]要素を確認してください。起動時に起動されるアプリがあります。
FeliceM 2013

起動時にMAMPを実行するだけでなく、AMPPSであると確信していますか コンピュータを再起動し、「ps -Awww | 端末でgrep mysql 'と入力します。これにより、少なくとも実行可能ファイルが実行されていることがわかります。
MJウォルシュ

回答:


10

ターミナルを開いてから:

sudo launchctl list | grep -i mysql

launchctl remove xxx.xxx.mysql

ここで、「xxx.xxx」は最初のコマンドの出力に含まれています(例:「org.macports.mysql」)。「sudo」コマンドのパスワードは、自分のユーザーアカウントのパスワードです。

確かに、sudoは「一覧表示」する必要はありませんが、最初のコマンドにすでにsudoパスワードを指定しているため、セッションメモリにしばらくの間保存され、2番目のコマンド(特権)には必要ありません。それ以外の場合は、最初のコマンドでsudoをスキップして、2番目のコマンドで使用します。猫の皮をむく方法は1つではありません。


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、

3

以前にインストールされたMySQLのバージョンがSUN / OracleサイトのMySQLコミュニティダウンロードページからのものである場合、それlaunchdmysqldプロセスの起動に関与していない可能性があります。何らかの理由で、MySQLと共に配布される起動スクリプトは、非推奨の「起動項目」テクノロジーを使用して、起動時にプロセスを開始します。実際、現在のバイナリ配布(5.6.15)でも、mysqldStartupItemsを使用してOS X(?!)でサーバーを起動しています。

MySQLの競合するバージョンを起動する起動スクリプトは、おそらくにあり/Library/StartupItems/MYSQLCOM/MYSQLCOMます。起動時に、そのスタートアップ項目はでファイルを調べて/etc/hostconfig、「MYSQLCOM」変数の設定が「-YES-」に設定されているかどうかを判断します。その場合、起動スクリプトが起動しmysqldます。

/etc/hostconfig指定MYSQLCOM=-YES-する行を変更することで、MySQLの起動を無効にできるはずです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。... Preferenceペインを削除して、古いMySQLインストールの一部を「クリーンアップ」することもできます。


残念ながら、MySQLに関連する/ etc / hostconfigファイルには何もありません:i.imgur.com/3C2jxPZ.png
Zaki Aziz

またsudo /Library/StartupItems/MYSQLCOM/MYSQLCOM stop、何も出力し
Zaki Aziz、


1

mysqldの名前を変更(または移動/バックアップ/削除)してから再起動し、使用できなくなったプログラムを起動しようとした起動アイテムのエラーメッセージを探す方が簡単な場合があります。

他の回答は、Launch AgentsとLaunch Daemonを探すタック、および通常は親PIDが1であるため、デーモンでは機能しないPIDをトレースすることをカバーしているようです。

また、mysqlはMavericksに同梱されていないmdfind mysqldため、選択したインストールパッケージを追跡したり、そのデータベースをMacにもたらしたパッケージを見つけたり、そのmysqlのパッケージのアンインストール/無効化手順を見つけたりできるはずです。また、ソフトウェアを起動するためのコントロールをそこにインストールしている場合は、システム設定を確認することもできます。


mdfind mysqldAMPPS関連のMySQLファイルは表示されず、MAMP関連のファイル(およびMySQL WorkbenchのようにインストールしたいずれかのMySQLプログラムからの他のいくつか)のみが表示されます
Zaki Aziz

1

mysqlを開始した親プロセスが何かを調べることから始めます。ターミナルからpsコマンドを実行して、プロセスを確認します。-jまたは-lを使用して、親IDをリストできますppid。だからこれはあなたを表示します:

$ ps -axjc | grep mysql

最初の列はユーザ​​ーID、2番目はプロセスID、3番目は親IDです。

親IDが1の場合、ルート起動デーモンによって起動されています。これは、おそらくLaunchDaemonsまたはStartupItemsのいずれかからのものであることを意味します。それが1ではないが、launchdプロセスであるプロセスからのものである場合、それはおそらく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」が含まれているわけではないことに注意してください。別のプログラムまたはログイン項目によって実行された可能性があります(したがって、名前で検索するだけでは見つからない可能性があります)。 。それを起動したものを見つけたら、それがどこから来たのかを知ることができるかもしれません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.