Como posso desativar o MySQL para iniciar na inicialização?

10

Eu tenho um MBA em meados de 2013 executando o OSX 10.9.

O processo iniciado em cada inicialização é mysqld. Eu acredito que era de uma versão antiga do MySQL que eu tinha instalado (via AMPPS ). Eu instalei o MAMP Pro e geralmente tenho conflitos entre esses dois processos. Toda vez que eu desligo e reinicio o meu mac, tenho que encontrar o processo em mysqldexecução (no monitor de atividades), encerrá-lo e iniciar o MAMP (através do comando terminal: /Application/MAMP/bin/startMysql.shnão funcionará em nenhum outro lugar).

Então, eu estou querendo saber como posso desativar isso mysqldem cada inicialização.

Zaki Aziz
fonte
Você é capaz de executar pspara rastrear o processo pai e ver o que está iniciando mysqld?
bmike
Vamos ver se alguém tem informações mais direcionadas. Rastrear processos e eliminá-los do terminal não é o mais fácil de escrever. Você pode obter as mesmas informações no Activity Monitor - selecione mysql - e depois em info, e procure o processo pai.
bmike
1
Possível resposta útil de Superuser: superuser.com/a/334622
Mikey TK
Não tenho certeza se isso pode ajudar, pois é para aplicativos iniciados no início. No entanto, consulte os elementos Preferências do sistema >> Usuários e grupos >> Login. Você encontrará o aplicativo iniciado na inicialização.
FeliceM
Você tem certeza de que é o AMPPS e não apenas o MAMP em execução na inicialização. Reinicie o computador e digite 'ps -Awww | grep mysql 'no terminal. Isso deve pelo menos informar qual executável está sendo executado.
MJ Walsh

Respostas:

10

Abra o terminal e, em seguida:

sudo launchctl list | grep -i mysql

launchctl remove xxx.xxx.mysql

Onde "xxx.xxx" está incluído na saída do primeiro comando, por exemplo "org.macports.mysql". A senha do comando "sudo" é a senha da sua própria conta de usuário.

É verdade que o sudo não é necessário para "listar", mas como você já forneceu uma senha do sudo para o primeiro comando, ela é armazenada por um breve período na memória da sessão e não é necessária para o segundo comando (que é privilegiado). Caso contrário, basta pular o sudo no primeiro comando e usá-lo no segundo. Existem várias maneiras de esfolar um gato.

user64759
fonte
2
sudo launchctl list | grep -i mysqlnão produz resultado. Nem sudo launchctl list | grep -i mysqld i.imgur.com/WZ5EVjw.png
Zaki Aziz
Você pode usar o Painel de administração do AMPPS para desativar o daemon do MySQL do AMPPS. Ou melhor ainda, desinstale completamente o AMPPS, pois você tem outra estrutura instalada agora.
user64759
Desinstalei o AMPPS e ainda tenho esse problema.
Zaki Aziz
3

Se a versão do MySQL que foi instalada anteriormente se originou da página Downloads da Comunidade MySQL no site SUN / Oracle, é provável que isso launchdnão esteja envolvido na inicialização do mysqldprocesso. Por alguma razão, o script de inicialização que é distribuído com o MySQL usa a tecnologia "Itens de inicialização" descontinuada para iniciar processos na inicialização. De fato, mesmo a distribuição binária atual (5.6.15) mysqldusa StartupItems para iniciar o servidor no OS X (?!)

O script de inicialização que está lançando a versão conflitante do MySQL provavelmente está localizado em /Library/StartupItems/MYSQLCOM/MYSQLCOM. No momento da inicialização, esse item de inicialização examinará o arquivo em /etc/hostconfigpara determinar se a configuração da variável "MYSQLCOM" está definida como "-YES-". Nesse caso, o script de inicialização será iniciado mysqld.

Deve ser possível desativar a inicialização do MySQL, modificando a linha /etc/hostconfigespecificada MYSQLCOM=-YES-por dizer MYSQLCOM=-NO-(que deve desativar o processo de inicialização na próxima inicialização).

Você pode encerrar a instância atualmente em execução mysqldexecutando o comando:

sudo /Library/StartupItems/MYSQLCOM/MYSQLCOM stop

Para desativar permanentemente a inicialização do processo errado mysqld , deve ser possível primeiro parar o daemon usando o comando acima e, em seguida, remover o item de inicialização do MySQL usando o seguinte comando:

sudo rm -rf /Library/StartupItems/MYSQLCOM

Nota: você também pode ter o Painel de Preferências do MySQL instalado em /Library/PreferencePanes/MySQL.prefpaneou ~/Library/PreferencePanes/MySQL.prefpane... Esse painel de preferências também pode ser removido para 'limpar' partes da instalação antiga do MySQL.

Eddie Kelley
fonte
Infelizmente não tenho nada no meu arquivo / etc / hostconfig que se associe ao MySQL: i.imgur.com/3C2jxPZ.png
Zaki Aziz
E sudo /Library/StartupItems/MYSQLCOM/MYSQLCOM stopnão produza nada: i.imgur.com/ukHtW5x.png
Zaki Aziz
3

O seguinte funcionou para mim com o mysql 8.0.12instalado usando o Homebrew no macOS Mojave 10.14.1:

rm -rf ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
Vikram Hosakote
fonte
Ele trabalhou para se encontrar no mysql instalado no homebrew. obrigado.
Almas Dusal
1

Pode ser mais fácil renomear o mysqld (ou movê-lo / fazer backup / excluí-lo) e, em seguida, reinicie e procure a mensagem de erro do item de inicialização que estava tentando iniciar o programa que não está mais disponível.

As outras respostas parecem cobrir a questão de procurar Agentes de Lançamento e Daemons de Lançamento, além de rastrear o PID, que geralmente não funciona para os daemons, pois eles geralmente têm um PID pai de 1.

Além disso, como o mysql não é enviado com o Mavericks, você deve acompanhar o pacote de instalação selecionado ou usar mdfind mysqldpara localizar o pacote que trouxe esse banco de dados para o seu Mac e, em seguida, localize as instruções de desinstalação / desativação desse pacote do mysql. Você também deve procurar nas preferências do sistema, caso tenha instalado um controle lá para iniciar o software.

bmike
fonte
mdfind mysqldnão mostra nenhum arquivo MySQL relacionado ao AMPPS, apenas arquivos relacionados ao MAMP (e alguns outros dos programas MySQL que eu instalei como o MySQL Workbench) #
236 Zaki Aziz
1

Comece descobrindo qual é o processo pai que iniciou o mysql. No Terminal, execute um pscomando para descobrir qual é o processo; você pode usar -jou -lpara listar a identificação principal ppid. Então, isso mostrará a você:

$ ps -axjc | grep mysql

A primeira coluna é seu ID do usuário, a segunda é a identificação do processo, a terceira é a identificação principal.

Se o ID pai for 1, ele será iniciado pelo daemon de inicialização raiz, o que provavelmente significa que é proveniente de um dos LaunchDaemons ou StartupItems. Se for proveniente de um processo que não seja 1, mas que seja um processo launchd, provavelmente será o LaunchAgents ou estará nos itens de login do sistema.

root                1     0     1      0    0 Ss     ??    4:49.10 launchd
alblue            257     1   257      0    0 Ss     ??    0:16.29 launchd
_spotlight        415     1   415      0    0 Ss     ??    0:00.94 launchd

Portanto, o processo 1 é iniciado pela inicialização do sistema e qualquer coisa com o processo pai de 1 vem dos daemons do sistema. Tudo (neste caso) com um processo pai de 257 está sendo iniciado a partir de um dos LaunchAgents ou LoginItems.

Lembre-se de que o nome do daemon de inicialização ou item de inicialização não tem necessariamente 'mysql' no título - ele pode ter sido executado por um programa ou item de login diferente (portanto, simplesmente não é possível procurá-lo pelo nome) . Depois de encontrar o que o lançou, você poderá descobrir de onde veio.

AlBlue
fonte