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
Respostas:
@dcc estava muito perto. É assim que o MySQL se reinicia automaticamente no Yosemite:
O com.mysql.mysql.plist
em /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!
sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist
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>
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
Crie /Library/LaunchDaemons/com.mysql.mysql.plist
e 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
apachectl start
inicia o servidor !? eles estão relacionados?
sudo launchctl load -w...
lança um erroInvalid property list
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>
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.plist
com 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
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 KeepAlive
chave fará com que o processo seja iniciado novamente imediatamente após o botão Parar ser pressionado. Usei a chave RunAtLoad
para 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