web-dev-qa-db-ja.com

Mac OS X Yosemite / El CapitanでのMySQLサーバーの自動起動

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

編集:これはエルキャピタンでも動作するようです

enter image description here

82
Xaver

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

さらに、 this answer に基づいて権限を変更しました

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

追加があれば、以下に共有してください!

143
Xaver

@ revaxarts Directions に従い、コマンドを実行しようとすると

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>
13
Genia S.

homebrewでmysqlをインストールしたの場合、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
9
Kyle Chadha

この記事は、無効なエラーの問題の解決に役立ちます。以下で使用する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>
2
Sharvin

/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
2
davidcondrey

提供された他の回答はどれも、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
1
NobleUplift

以前の回答で提案された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を実行しています

0
Franklin F