web-dev-qa-db-ja.com

ElCapitanで再起動せずにMySQLを終了する

組み込みのサーバースタック(Apache 2.4.16、MySQL 5.6.26)を備えたOS X 10.11 ElCapitanを実行しています。

Mysqlを終了する必要がありますが、プロセスを強制終了するとすぐに再起動します。

これが私がこれまでに試したことです:


プロセスを殺す

$ ps aux | grep mysqlPIDを取得するには

74 49484     1   0 10:23AM ??         0:00.46 /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 --port=3307

次に、$ Sudo kill -9 49484はプロセスを強制終了しますが、すぐに高いPIDで再起動します。


Launchdからmysqldをアンロードしています

$ launchctl list | grep mysqlは何も返さないため、$ launchctl unloadには何も返されません。


Mysqlサーバーを停止しています

$ /usr/local/mysql/support-files/mysql.server stopは「エラー!MySQLサーバーのPIDファイルが見つかりませんでした!」で失敗します。 mysqlが実行されており、PIDファイルが/usr/local/mysql/data/mysqld.local.pidで最新であるにもかかわらず。


上記はすべて、Stack Overflowで見つけた推奨ソリューションですが、ElCapitanではどれも機能しません。 Yosemiteでは、プロセスを強制終了するだけで十分でしたが、El Capitanの更新により、mysqlはすぐに再起動されます。

ありがとう。

20
amacrobert

最終的に私のために働いたのは、Macのシステム環境設定インターフェースを介してMySQLを停止することでした。それが戻ってくることなくmysqlを殺しました。

enter image description here

28
amacrobert

オン macOS Sierra、これは私のために働いた

MySQLを停止します:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

MySQLを起動します:

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

OS X El Capitanでは、これは私にとってはうまくいきました:

Sudo launchctl unload -F /Library/LaunchDaemons/com.Oracle.oss.mysql.mysqld.plist
8
Theory

次のコマンドが機能することがわかりました。

Mysqlを停止するには:

Sudo launchctl unload -F /Library/LaunchDaemons/com.mysql.mysql.plist

Mysqlを起動するには:

Sudo launchctl load -F /Library/LaunchDaemons/com.mysql.mysql.plist
4
mlcork

私の設定で私はこれを見つけました:

$ cat /Library/LaunchDaemons/com.mysql.mysql.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>KeepAlive</key>
    <true />
    <key>Label</key>
    <string>com.mysql.mysqld</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/local/mysql/bin/mysqld_safe</string>
      <string>--user=mysql</string>
    </array>
  </dict>
</plist>

キープアライブ後のtrueタグをfalseに変更し、他の人が提案しているようにデーモンをアンロードする必要があります。私の場合、それは次のとおりでした:Sudo launchctl unload -F /Library/LaunchDaemons/com.mysql.mysql.plist && launchctl load /Library/LaunchDaemons/com.mysql.mysql.plist

デーモンが新しい構成で再起動すると、設定からデーモンを強制終了したときにmysqlがシャットダウンされるのを防ぐことはできません。

3

homebrewを使用してmysqlをインストールした場合、次のbrewコマンドを使用しない限り、mysqldは再起動し続けます。

brew services list

brew services list output

停止するサービスの名前を取得してから、次のコマンドを実行します。

brew services stop [email protected]
2

理論の答えによると、これはMojaveに対しても有効です。

Sudo launchctl unload -F /Library/LaunchDaemons/com.Oracle.oss.mysql.mysqld.plist

Amacrobertによると、mysqldが起動し続けるというこの問題に直面している場合、これはシステムレベルにmysqlがインストールされていることが原因である可能性が高く、デフォルトでは、コンピューターの再起動時に自動的に起動します。

私の状況では、コンピューターを再起動した後、dockermysqlコンテナーが既に割り当てられているポートについて不平を言った理由がわかりませんでした。継続的なデバッグの後、システムレベルでmysqlをインストールし、コンピューターを再起動しなかったことを覚えています。

乾杯。

1
David Biga

これにより、Mac Sierraでmysqlが停止しました

Sudo launchctl unload -F /Library/LaunchDaemons/[email protected]

0
Santosh