マシンにmacOS Sierraを再インストールしました。Oracle MySQL Community Server 5.7.15(mysql-5.7.15-osx10.11)をインストールした後、コンソールからMySQLサーバーを停止しようとしました。「エラー!MySQLサーバーのPIDファイルが見つかりませんでした!」というエラーが返されました。
私は自分でいくつかの研究をしましたが、私の問題の解決策を見つけることができませんでした。
助言がありますか?
マシンにmacOS Sierraを再インストールしました。Oracle MySQL Community Server 5.7.15(mysql-5.7.15-osx10.11)をインストールした後、コンソールからMySQLサーバーを停止しようとしました。「エラー!MySQLサーバーのPIDファイルが見つかりませんでした!」というエラーが返されました。
私は自分でいくつかの研究をしましたが、私の問題の解決策を見つけることができませんでした。
助言がありますか?
回答:
Preferences Pane / launchdを介してMySQLサーバーを起動および停止することと、sudo /usr/local/mysql/support-files/mysql.server start/stop
実際には互換性がありません。
MySQLインストーラーで「Launchd Support」を選択すると、起動デーモンcom.oracle.oss.mysql.mysqldが作成され、MySQL設定ペインはlaunchdメカニズムを使用してmysqlを起動および停止します。「起動時にMySQLサーバーを自動的に起動する」を有効にすると、Macの起動後にmysqldが自動的に有効になります。
起動デーモンによって作成されたpidファイルの名前は、mysql-serverスクリプトによって作成され期待されるものと互換性がありません。
実行中に作成される起動デーモンのpidファイル名はmysql.local.pidです。スクリプトは、Macのホスト名、.localまたはコンピューター名に基づいた名前を期待します。
したがって、MySQLの設定ペイン/ 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)のいずれか。おそらく最良の方法はホスト名を使用することです。hostnameでホスト名を取得するscutil --get HostName
か、で設定しsudo scutil --set HostName your_hostname
ます。
また、起動デーモンを停止してmysqldを起動した後、でmysql-server start
mysqlのデータディレクトリを確認することにより、実際に使用されているmysql-serverスクリプトpidの名前を取得することもできますsudo ls /usr/local/mysql/data
。そこにある名前を使用して、plistのpid名を調整します。
編集するには、起動デーモンファイルをxmlに変換する必要がある場合があります。TextWranglerアプリは、すぐにそれをxmlファイルとして開きます。
後でlaunchctlでplistをリロードします。
これで、MySQLの設定ペインとmysql.serverスクリプトで開始および停止できるようになります。
「起動時にMySQLサーバーを自動的に起動する」を有効にした場合、launchd は数秒後に停止コマンドをオーバーライドし、mysqldを再度起動するため、plistを変更した後でもスクリプトでサーバーを停止できません。