Inicie automaticamente o servidor MySQL no Mac OS X Yosemite / El Capitan

84

Eu gostaria de iniciar automaticamente o servidor MySQL na inicialização. Isso era possível no Mavericks, mas parece não estar funcionando no Yosemite.

editar : parece que isso funciona com El Capitan também

insira a descrição da imagem aqui

Xaver
fonte

Respostas:

143

@dcc estava muito perto. É assim que o MySQL se reinicia automaticamente no Yosemite:

O com.mysql.mysql.plistem /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>

Além disso, alterei as permissões com base nesta resposta

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

Finalmente eu executo este comando

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

Se você tiver alguma adição, por favor, compartilhe abaixo!

Xaver
fonte
1
Você deve marcar seu Q respondido para que outras pessoas encontrem sua solução.
davidcondrey
26
Sonho com o dia em que o OSX 10.11 chegará e não terei que gastar 2 horas para consertar apache, php e mysql. Talvez seja hora de mudar para o Vagrant ..
dvk3
10
apenas duas horas! haha
Xaver
8
Realmente funciona. BTW, os primeiros dois comandos podem ser combinados em um:sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist
Rockallite
1
Muito útil ter isso para reduzir minhas duas horas para colocá-los em funcionamento novamente! Obrigado rapazes.
Nigel B. Peck
13

Segui as instruções do @Xavers e ao tentar executar o comando

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

recebeu o erro:

/Library/LaunchDaemons/com.mysql.mysql.plist: Lista de propriedades inválida

Depois de coçar a cabeça por um minuto, descobri que remover a declaração DOCTYPE DTD no topo fazia o erro desaparecer e ao reiniciar o servidor mySQL está, de fato, em execução.

Então, meu XML é assim:

<?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>
Yevgeny Simkin
fonte
9

Se você instalou o mysql com o homebrew , pode obter instruções sobre como inicializá-lo automaticamente digitando brew info mysql.

Por exemplo, a saída em minha máquina é:

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
Kyle Chadha
fonte
2

Crie /Library/LaunchDaemons/com.mysql.mysql.pliste salve-o com o seguinte 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>

Em seguida, carregue o arquivo plist recém-criado

sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist
davidcondrey
fonte
não funciona, ele ainda diz "parado" após um reinício :(
Xaver
apachectl startinicia o servidor !? eles estão relacionados?
Xaver de
O sudo launchctl load -w...lança um erroInvalid property list
Xaver
estou sem possibilidades, desculpe
davidcondrey
1
ok, obrigado mesmo assim, postarei a solução se conseguir encontrar uma
Xaver
2

Este artigo me ajuda a resolver o problema de erro inválido. Plist corrigido que usei abaixo.

Como saber qual linha do arquivo plist está incorreta

<?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>
Sharvin
fonte
1

Nenhuma das outras respostas fornecidas funcionou para iniciar automaticamente meu servidor MySQL. Segui as instruções do manual do MySQL 5.6 e ele finalmente inicia novamente! Crie o arquivo /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plistcom o seguinte conteúdo:

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

E execute os seguintes comandos após criar o arquivo:

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

Quando usei o plist sugerido nas respostas anteriores, mudei o usuário para _mysql no meu sistema, mas o botão "Parar servidor MySQL" no painel de preferências do MySQL não funcionava mais. A KeepAlivechave fará com que o processo seja iniciado novamente imediatamente após o botão Parar ser pressionado. Usei a chave RunAtLoadpara fazê-lo iniciar na reinicialização, mas permitir que o botão no painel continue funcionando.

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

Então, como nas outras respostas, correu:

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

Agora, o MySQL inicia na reinicialização, mas o painel MySQL em Preferências do Sistema ainda funciona. Estou executando o El Capitan, 10.11.2

Franklin F
fonte