“Falha ao gerar o processo principal do mysql: incapaz de executar: esse arquivo ou diretório não existe”

56

Eu sou um novato no MySQL, então tenha paciência comigo.

Acabei de atualizar o 11.10 para o 12.04.

Tudo parecia funcionar sem soluços e todo o meu software e configurações estão funcionando bem. Além do MySQL.

Quando tento:

sudo start mysql

Eu recebo um erro:

start: Job failed to start

Onde posso diagnosticar qual é o problema? E (espero) - como resolver isso?

(Desativei o início automático seguindo os conselhos aqui, se isso for de alguma importância)


Atualização 1:

Ambas as saídas de:

cat /var/log/mysql.err 
cat /var/log/mysql.log

estão vazios.

Saída de dmesg | grep mysql:

[ 1401.785141] type=1400 audit(1335619832.181:25): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=16165 comm="apparmor_parser"
[ 1401.791089] init: Failed to spawn mysql main process: unable to execute: No such file or directory

Atualização 2:

Conforme indicado pelo AWinter abaixo - parecia que o MySQL desapareceu automaticamente após a atualização e teve que ser reinstalado.

radek
fonte

Respostas:

48

Verifique se o pacote mysql-server-5.1 foi desinstalado, parece que pode persistir após a atualização. Eu tive o mesmo erro e tive que limpar o servidor MySQL 5.1 e 5.5 e reinstalar.

Primeiro faça um backup do seu diretório / var / lib / mysql / apenas por segurança.

sudo cp -R /var/lib/mysql/ ~/mysql

Em seguida, limpe o MySQL (isso removerá o php5-mysql e o phpmyadmin, além de várias outras bibliotecas, esteja preparado para reinstalar alguns itens depois disso.

sudo apt-get purge mysql-server-5.1 mysql-common

Remova a pasta / etc / mysql / e seu conteúdo

sudo rm /etc/mysql/ -R

Em seguida, verifique se os arquivos antigos do banco de dados ainda estão em / var / lib / mysql /, se não estiverem, copie-os novamente para a pasta e então chown root: root

(execute-os somente se os arquivos não estiverem mais lá)

sudo mkdir /var/lib/mysql/
sudo chown root:root /var/lib/mysql/ -R
sudo cd ~/mysql/
sudo cp * /var/lib/mysql/ -R

Em seguida, instale o servidor mysql

sudo apt-get install mysql-server

Finalmente, reinstale todos os pacotes ausentes, como phpmyadmin e php5-mysql.

AWinter
fonte
11
Excelente. Trabalhou como um encanto. Todos trabalhando novamente. Uma observação: eu não precisei remover esse diretório sudo rm /etc/mysql/ -R- ele simplesmente não estava presente no meu caso. De qualquer forma - felizmente foi apenas um local de instalação para testar Wordpress .. Queria saber o que iria acontecer em um servidor real o_O
radek
O apt-get --reinstall install mysql-server-xx fez o trabalho por mim.
Yashima #
Isso funcionou para mim, mas eu provavelmente deveria ter feito isso apt-get updateantes, porque removeu o dovecot e o php5-mysql. Eu só poderia reinstalá-los após a atualização. Uma vez que eu tinha feito, tudo estava novamente funcionando bem.
AntonChanning
Eu recebo -bash: cd: /var/lib/mysql/: Permission deniede uso sudo -inem funciona.
Charlotte
@LittleBigBot Fiz uma alteração que deve corrigir isso.
precisa saber é o seguinte
15
sudo dpkg-reconfigure mysql-server-5.5
Kevin C. Smith
fonte
Não é uma resposta muito amigável, mas funcionou para mim :-) #
Joseph
11
Não funcionou para mim: [
ThomasReggi 23/09
12

Eu tive esse mesmo problema e, para mim, os arquivos de log do InnoDB tinham um tamanho diferente do que o mysql esperava e falharam silenciosamente durante a atualização.

Eu tinha um arquivo de configuração personalizado que foi eliminado na atualização para a versão 12.04, que definiu os tamanhos dos arquivos de log como algo diferente da configuração padrão.

Você precisa remover os arquivos: / var / lib / mysql / ib_logfile *

Após a saída dos arquivos, o mysql agora pode iniciar e criar novos arquivos de log do tamanho padrão.

Corey Aufang
fonte
Bingo. No nosso caso, um desenvolvedor alterou algumas configurações do innodb (e nem ele nem eu sabíamos que isso poderia causar um problema). Isso impediu o mysql de iniciar. A exclusão desses arquivos de configuração permitiu que o MySQL iniciasse.
precisa saber é o seguinte
Bingo - alterou a configuração para innodb_log_file_size.
tweak2
9

A maioria dos erros será exibida iniciando o servidor no modo detalhado não daemon e observando a saída:

sudo mysqld --verbose
Ian Mackinnon
fonte
7

Eu tive o mesmo problema, mas nenhuma das respostas acima me ajudou. Como esperança final, tentei liberar espaço em disco. Simplesmente removo arquivos de log desnecessários de / var / log, que liberaram espaço de 2,5G. Então o MySQL começou normalmente.

Olho
fonte
Sim, esse também era meu problema. O mysql não estava sendo iniciado durante a inicialização, como havia sido. Mais tarde, foram as informações do sistema que são renderizadas no terminal; "Uso de /: 95.1%" Portanto, não havia espaço livre suficiente para o mysql (e outros processos) iniciar. Eu precisava fazer alguma limpeza de arquivo, e o mysql começou sem problemas.
Screenack
Este foi o meu caso. A limpeza do disco e o Mysql começam a funcionar.
Sergey Romanov
5

Isso às vezes acontece e, embora existam alguns problemas diferentes que podem fazer com que o mysql não inicie, escreverei aqui alguns dos mais comuns que eu conheço:

NOTA - Por explicar os problemas mais comuns, suponho que você já tentou remover e instalar ou simplesmente reinstalar o serviço mysql da seguinte maneira:

Para instalar - sudo apt-get install mysql-server mysql-client
Para remover - sudo apt-get remove mysql-server mysql-client
Para limpar (Remover arquivos + Config) - sudo apt-get purge mysql-server mysql-client
Para reinstalar -sudo apt-get install --reinstall mysql-server mysql-client

  1. my.cnfO arquivo não está no diretório padrão. Ele deve estar (por padrão) estar localizado em /etc/my.cnfou /etc/mysql/my.cnf.

  2. Não há espaço suficiente no disco rígido onde estão os arquivos de dados mysql. Se os bancos de dados ficarem muito grandes e ocuparem 100% do disco rígido, o serviço falhará.

  3. Após a atualização, verifique se o my.cnfarquivo está no local correto. Dependendo de como você atualizou ou de qual versão você atualizou, ela pode estar dentro /etc/my.cnfou /etc/mysql/my.cnfconforme mencionado anteriormente. Lembre-se também de que o arquivo também pode ser nomeado mysql.confe não apenas my.cnf. Isso acontece nos casos em que você baixou o binário do mysql.com .

  4. Fazer um dmesgpara ver o que o serviço mysql está lançando como mensagem de erro ajuda, pois fornece o erro de carregamento. Também pode dizer por que isso está acontecendo. Se você digitar dmesgsozinho no terminal, ele mostrará o mundo. O que queremos é a informação sobre o mysql, então faça algo como isto: dmesg | grep mysqlisso exibirá quaisquer linhas que contenham o mysql.

  5. Verifique se o arquivo my.cnfou mysql.confestá correto. No 12.04 o MySQL é a versão 5.5, no 11.10 é a versão 5.1. Pode haver algumas alterações no arquivo conf (na verdade não verificamos isso) e pode parecer bobo, mas com certeza pode causar alguns problemas.

  6. Erros relacionados a problemas de soquete normalmente são culpa do arquivo my.cnfou mysql.confapontando para o lugar errado, eles normalmente serão mostrados como:

    Não é possível conectar ao servidor MySQL local através do soquete '/var/run/mysqld/mysqld.sock'

    A outra fonte desse problema está relacionada ao mysqlarquivo, /etc/init.dpois está apontando para a pasta errada, pois pode estar usando um script mais antigo que o necessário para o mysql real no sistema (ele pode não ter sido atualizado corretamente, não foi substituído) o arquivo de configuração, etc.). Então, basta editar qualquer um desses dois arquivos e ver se eles estão apontando para outro lugar e, em seguida, basta fazer um sudo service mysql restartpara verificar se funciona.

  7. Para dar uma olhada melhor nas saídas específicas do erro do mysql, faça o seguinte:

    cat /var/log/mysql.err- Irá mostrar os erros do mysql. Eu faria assim cat /var/log/mysql.err | lessse você ver muitas informações passarem, pois lessisso o ajudará a rolar pela saída de cat.

    O mesmo vale para cat /var/log/mysql.logSe você vir o erro, talvez o coloque na pergunta ou como um comentário ajudará a responder isso mais rapidamente.

  8. Se você estiver com problemas de conexão e o serviço estiver em execução, tente verificar se o Firewall do servidor está permitindo conexões pela porta 3306 (conexões de entrada). Depois verifique se o roteador (se aplicável) não bloqueou a porta 3306. Basicamente, faça um teste de rede para ver de onde se originou o problema relacionado à porta atribuída ao mysql.

Se tudo estiver bom, para testar se o serviço mysql está em execução, digite service mysql status

Como último recurso. Se você estiver executando o mysql, mas não conseguir fazer o login, tente o seguinte:

  1. Pare o servidor MySQL:

    sudo /etc/init.d/mysql stop ou sudo service mysql stop

  2. Inicie o mysqldserviço manualmente com configuração manual

    sudo mysqld --skip-grant-tables &

    (Lembre-se de adicionar o & else, você terá que abrir outro terminal. O & envia o processo para o segundo plano e você pode matar usando o mesmo terminal).

  3. Entre no banco de dados mysql como ROOT

    mysql -u root mysql

  4. Digite o seguinte substituindo MyPASSWORD por sua nova senha

    UPDATE user SET Password=PASSWORD('MyPASSWORD') WHERE User='root';
    FLUSH PRIVILEGES;
    EXIT;

Isso deve ser suficiente para fazer login no serviço Mysql como root novamente. Espero que ajude.

Luis Alvarado
fonte
Obrigado pelo feedback imediato. O arquivo my.cnf está /etc/mysql/my.cnfno meu caso. Essa localização é correta? dmesgdá-me pleeenty de saída que está além da minha compreensão: / eu realmente tinha 5.1 instalado - isso tem alguma conseqüência?
Radek
11
Não se preocupe com o local, se você encontrar o arquivo. Deixe-me atualizar a resposta para fornecer uma visão melhor da saída do mysql no dmesg.
31512 Luis Alvarado
4

Eu tive o mesmo problema depois de atualizar para o Ubuntu Server 12.04 LTS, executando

sudo apt-get install mysql-server 

foi o suficiente para corrigi-lo, embora se queixasse de um banco de dados antigo do spotweb. Corrigi isso removendo a spotweb:

sudo apt-get purge spotweb

e reconfigurando o mysql:

sudo dpkg-reconfigure mysql-server-5.5
RedPixel
fonte
4

Vou adicionar este caso alguém enfrenta problemas semelhantes. Eu tentei toda a desinstalação e reinstalação sem sucesso. A chave para encontrar a solução é que o iniciante coloca seus logs de erros nesta pasta

/ var / log / upstart /

para mysql

/var/log/upstart/mysql.log

quando abri tinha essa mensagem

Erro do analisador do AppArmor para /etc/apparmor.d/usr.sbin.mysqld em /etc/apparmor.d/tunables/global na linha 15: Não foi possível abrir 'tunables / home'

Quando procurei na pasta /etc/apparmor.d/tunables/ , estava faltando o arquivo inicial, então criei um

gedit /etc/apparmor.d/tunables/home e copiou o conteúdo de outro computador que tivesse essas linhas não comentadas

@ {HOME} = @ {HOMEDIRS} / * / / root /

@ {HOMEDIRS} = / home /

alguém enfrenta um problema semelhante aqui

https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/982303

depois disso eu fui capaz de reiniciar o serviço

pt123
fonte
2

No meu caso, foi muito mais fácil do que algumas respostas aqui. Encontrei o bug relacionado na barra de ativação e a correção foi conforme mencionado no comentário 9:

sudo touch /etc/apparmor.d/local/usr.sbin.mysqld
sudo service apparmor restart
Manfred Moser
fonte
1

Após a atualização, descobri que o mysql-server / mysql-server-5.5 não estava instalado e nem o 5.1. Renomeei my.cnf para my.cnf_old e tentei instalar o mysql-serven. Durante a instalação, houve uma mensagem de erro informando que a senha raiz não pôde ser definida. Depois disso, verifiquei minhas configurações, apparmor e assim por diante. Tudo parecia estar bem. Minha próxima tentativa foi reconfigurar o mysql-server, mas ele reclamou que o pacote não estava instalado completamente. Então eu decidi desinstalar e durante este apt-get consertamos o pacote e agora ele está funcionando. Não sei porque, porque não mudei nada.

user54914
fonte
1

Eu tive problemas semelhantes, mas fui rapidamente rastreado para o apparmor, que me lembrava de ter me dado esse problema anteriormente.

Se você fizer alterações nessas configurações e seu sistema usar o apparmor, também poderá ser necessário ajustar o /etc/apparmor.d/usr.sbin.mysqld. Por exemplo. essas linhas foram adicionadas (para permitir um link simbólico para o my.cnf e para permitir a leitura do arquivo vinculado, presumivelmente):

/ usr / sbin / mysqld {... /etc/mysql/*.cnf lr, /path/to/symlinked/my.cnf r, ...}

Simon Nuttall
fonte
1

No meu caso, tentei instalar o MySQL em uma nova instalação do Ubuntu 12.04, mas não entendi por que isso me causou um erro ao definir a senha do usuário 'root'. Eu tentei todas as soluções acima, mas nada a fazer.

Então decidi limpar / remover tudo, desinstalei o servidor MySQL e removi todas as suas pastas (/ etc / mysql / e / var / lib / mysql /), eventualmente, graças a uma espécie de aleatoriedade, não houve nenhum erro durante o reinstalação e consegui definir a senha e iniciar a instância do servidor.

Alexian
fonte
0

No terminal, você pode instalá-lo novamente e executar o my.cnf. Você pode digitar:

sudo apt-get install mysql-server-5.1
sudo apt-get --reconfigure mysql-server-5.1
sudo apt-get update
sudo start mysql my.cnf

pode funcionar dessa maneira.

Michael
fonte
0

Estou tendo problemas para adicionar performance_schemamenos [mysqld]em /etc/mysql/my.confcausa essa falha. Removida a linha e o mysql pôde iniciar novamente.

Edit: Acontece Um gig de memória RAM não é suficiente para iniciar o mysqld com o performance_schema ativado. Eu bati para 3 shows e funcionou bem.

ThorSummoner
fonte