Mac OS X Yosemite / ElCapitanでMySQLサーバーを自動起動する


84

起動時にMySQLサーバーを自動起動したいのですが。これはマーベリックスでは可能でしたが、ヨセミテでは機能していないようです。

編集:これはElCapitanでも機能するようです

ここに画像の説明を入力してください

回答:


143

@dccはとても近かった。これは、MySQLがYosemiteで再び自動起動する方法です。

com.mysql.mysql.plist/Library/LaunchDaemons

<?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>

さらに、この回答に基づいて権限を変更しました

sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist
sudo chmod 644 /Library/LaunchDaemons/com.mysql.mysql.plist

最後に、このコマンドを実行します

sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist

追加がある場合は、以下で共有してください!


1
他の人があなたの解決策を見つけられるように、Qに回答済みのマークを付ける必要があります。
davidcondrey 2014年

26
私はOSX10.11が到着する日を夢見ており、apache、php、mysqlを修正するために2時間を費やす必要はありません。多分それの時間が...ベイグラントに移動するには
dvk3

10
たった2時間!ハハ
Xaver

8
それは実際に動作します。:ところで、最初の2つのコマンドを1つに組み合わせることができるsudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist
Rockallite

1
これらを再び機能させるために私の2時間を短縮するためにこれを持っていることは非常に便利です!みんなありがとう。
ナイジェルB.ペック

13

@Xaversの指示に従い、コマンドを実行しようとすると

sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist

エラーが発生しました:

/Library/LaunchDaemons/com.mysql.mysql.plist:無効なプロパティリスト

少し頭を悩ませた後、上部のDOCTYPE DTD宣言を削除するとエラーが消え、再起動するとmySQLサーバーが実際に実行されていることがわかりました。

したがって、私のXMLは次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<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>

9

mysqlをhomebrewと一緒にインストールした場合は、と入力して自動起動する方法を説明できますbrew info mysql

たとえば、私のマシンの出力は次のとおりです。

To have launchd start mysql at login:
  ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
Then to load mysql now:
  launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

2

/Library/LaunchDaemons/com.mysql.mysql.plist次のplistを使用して作成し、保存します。

<!--?xml version="1.0" encoding="UTF-8"?-->

<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>
        </true>
    </dict>
</plist>

次に、新しく作成されたplistファイルをロードします

sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist

動作しませんが、再起動後も「停止」と表示されます:(
Xaver

apachectl startサーバーを起動します!?それらは関連していますか?
xaver

sudo launchctl load -w...エラーがスローされますInvalid property list
Xaver

申し訳ありませんが、私は可能性がありません
davidcondrey 2014年

1
わかりました、とにかくありがとう、私がそれを得ることができれば私は解決策を投稿します
Xaver

2

この記事は、無効なエラーの問題を解決するのに役立ちます。以下で使用したplistを修正しました。

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>

1

提供された他の回答はどれも、MySQLサーバーを自動起動するのに役立ちませんでした。MySQL 5.6ハンドブックの指示に従い、ついに自動起動しました。/Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist次の内容でファイルを作成します。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" 
  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>             <string>com.oracle.oss.mysql.mysqld</string>
    <key>ProcessType</key>       <string>Interactive</string>
    <key>Disabled</key>          <false/>
    <key>RunAtLoad</key>         <true/>
    <key>KeepAlive</key>         <true/>
    <key>SessionCreate</key>     <true/>
    <key>LaunchOnlyOnce</key>    <false/>
    <key>UserName</key>          <string>_mysql</string>
    <key>GroupName</key>         <string>_mysql</string>
    <key>ExitTimeOut</key>       <integer>600</integer>
    <key>Program</key>           <string>/usr/local/mysql/bin/mysqld</string>
    <key>ProgramArguments</key>
        <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/mysqld.local.err</string>
            <string>--pid-file=/usr/local/mysql/data/mysqld.local.pid</string>
            <string>--port=3306</string>
        </array>
    <key>WorkingDirectory</key>  <string>/usr/local/mysql</string>
</dict>
</plist>

そして、ファイルを作成した後、次のコマンドを実行します。

cd /Library/LaunchDaemons
sudo launchctl load -F com.oracle.oss.mysql.mysqld.plist

0

以前の回答で提案されたplistを使用したとき、システムのユーザーを_mysqlに変更しましたが、MySQL設定ペインの[MySQLサーバーの停止]ボタンが機能しなくなりました。KeepAliveキーは、プロセスが停止ボタンが押された直後に再び起動するようになります。キーを使用しRunAtLoadて再起動時に開始するようにしましたが、ペインのボタンは引き続き機能します。

<?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>RunAtLoad</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>

次に、他の回答と同様に、次のように実行しました。

sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist

これで、MySQLは再起動時に起動しますが、システム環境設定のMySQLペインは引き続き機能します。El Capitan、10.11.2を実行しています

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