O MySQL não inicia!

12

Estou recebendo esse erro ao tentar fazer login no MySQL na linha de comando:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

Eu acho que isso significa que o MySQL ainda não foi iniciado. Então, eu tento iniciá-lo:

sudo /etc/init.d/mysql start

e recebo esta mensagem:

* Starting MySQL database server mysqld [fail] 

Onde eu olho / o que faço para iniciar o MySQL? Estou executando o Ubuntu 8.04 e instalei o MySQL através do apt-get. Consegui começar a usá-lo algumas vezes, então não sei por que ele parou de funcionar.

Atualização: Ao executar o status do sudo /etc/init.d/mysql, recebo a mensagem:

* MySQL is stopped.

Atualização 2: Meus arquivos de log (/var/log/mysql.log & /var/log/mysql.err) estão vazios (se esses forem os corretos)

Andrew
fonte
o que acontece quando você sudo /etc/init.d/mysql status
emgee

Respostas:

10

No Ubuntu 12.04, tive esse mesmo problema depois de alterar o tamanho do buffer no arquivo /etc/mysql/my.cnf, acho que fiquei um pouco empolgado. De qualquer forma, depois de tentar alterá-los de volta à configuração padrão, o MySQL ainda não seria iniciado.

Tentei vários métodos diferentes para resolvê-lo, notei que /var/run/mysql/mysql.sock estava ausente. Isso pode ser um problema, então você pode verificar lá e, se estiver ausente, pode substituí-lo fazendo o seguinte:

sudo touch /var/run/mysql/mysql.sock
sudo chown mysql /var/run/mysql/mysql.sock

Isso NÃO resolveu o problema para mim! Mas pode ser para alguns.

O que eu tive que fazer foi reinstalar completamente o MySQL; para fazer isso, você precisará usar o comando sudo. As etapas para remover e reinstalar completamente o MySQL são as seguintes:

Remova o MySQL

sudo apt-get --purge remove mysql-server
sudo apt-get --purge remove mysql-client
sudo apt-get --purge remove mysql-common

Opcionalmente, você pode usar o aptitude, substituindo o apt-get --purge pelo aptitude

Limpar

sudo apt-get autoremove
sudo apt-get autoclean

Remova o diretório MySQL

sudo rm -rf /etc/mysql

Instale o MySQL

sudo apt-get install mysql-server mysql-client

Agora o MySQL deve estar em execução, você pode verificar isso fazendo o seguinte:

sudo service mysql status

Você deveria ver

mysql start/running, process xxxxx

Espero que isso ajude, e pensei em acrescentar, depois de fazer isso, todos os meus bancos de dados e tabelas, quando disponíveis, no entanto, tive que recriar os usuários e senhas desses bancos de dados.

Nota: Se você possui a extensão mysql para php, será necessário reinstalá-la também.

sudo apt-get install php5-mysql
Kyle Coots
fonte
Isso funcionou para mim, mas eu tive que alterá-lo para: sudo touch /var/run/mysqld/mysqld.socke descobri isso no final do /var/log/syslog (por exemplo, alterar para mysqld) #
Programmer
É /var/run/mysqldou /var/run/mysql?
CMCDragonkai
tocar no arquivo de meias é uma péssima idéia - você criou um arquivo comum, quando é realmente um soquete, que é um tipo especial de arquivo.
Criggie
3

AVISO: Isso é perigoso, seu mysql NÃO estará seguro e qualquer pessoa poderá conectar, editar, etc suas tabelas, não deixe seu servidor executando com este comando.

Tente iniciá-lo no modo de segurança: /usr/local/mysql/bin/safe_mysqld --user=mysql --skip-grant-tables

Se isso funcionar, pode haver problemas com o seu information_schema ou suas tabelas mysql. Se não funcionar, algo está errado com sua instalação.

lilott8
fonte
1
Isso é bom, fornece erros detalhados no syslog. O comando mudou, no Ubuntu 12.04 ésudo /usr/bin/mysqld_safe --user=mysql --skip-grant-tables
newz2000 5/05
3

Verifique seus arquivos de log como nas outras respostas. Além disso, verifique se você possui o suficiente (ou qualquer espaço em disco). O MySQL pode se comportar dessa maneira em uma partição vazia.

df -h

Caso contrário, consulte os documentos do MySQL sobre a depuração de um servidor . O deles myisamchk(se você estiver usando o MyISAM) é particularmente útil.

Aidan Fitzpatrick
fonte
3

Também recentemente tive esse problema após atualizar o ubuntu. Ainda não tenho certeza qual é exatamente o problema. Uma solução que funcionou no momento para executar o mysql:

sudo aa-complain /etc/apparmor.d/*mysql*

Isso faz funcionar, indicando que o apparmor interrompeu a execução do mysql e explicando por que os logs estão vazios provavelmente também: o mysql não teve permissão para executar.

Continua sendo um problema estranho, pois até o momento não há "reclamações" com isso /var/log/apparmor, e a única entrada de auditoria no kern.log é a de perseguir o perfil para o modo de reclamação.

Observe que, ao fazer isso, eu também adicionei um /etc/apparmor.d/local/usr.sbin.mysqlarquivo (vazio), pois o aa-reclamando ordenou queixa por não encontrar esse arquivo.

user143757
fonte
Muito obrigado! Depois de chegar perto de arrancar meu cabelo, isso finalmente o consertou.
21413 Olathe
3

Eu tive o mesmo problema com a minha gota de 512 MB no Digital Ocean.

Acabou que é devido à memória insuficiente.

Uma solução imediata é reiniciar outros serviços para liberar memória, por exemplo.

sudo service apache2 restart

Então, esperançosamente, com memória suficiente, você poderá reiniciar o mysql

sudo service mysql restart

A solução a longo prazo é obter mais RAM ou criar memória de troca .

samwize
fonte
2

Dê uma olhada nos seus arquivos de log. No Debian, pelo menos, você obtém logs do mysql * /var/log.

innaM
fonte
3
mysql.err e mysql.log são ambos vazios
Andrew
1

Teve esse mesmo problema, verifica-se que a solução estava me encarando. A viagem estava cheia. Você não recebe logs porque não há onde gravá-los ...

boatcoder
fonte
0

O mesmo problema me atormentou durante anos em um Ubuntu 12.04 Digital Ocean VPS com o mysql 5.6 instalado a partir de um PPA. Os sintomas eram os de que o arquivo mysql.sock /var/run/mysqld/mysql.sockseria removido, mas nunca recriado, então eu estava tendo que executar manualmente os seguintes comandos toda vez que o mysql era atualizado ou o servidor reiniciado:

sudo touch /var/run/mysqld/mysql.sock
sudo chown mysql /var/run/mysqld/mysql.sock

Esta foi a resposta de Kyle C (exceto com mysqld em vez de mysql). No final, fiz o downgrade para o mysql 5.5, que ocorre quando você normalmente executa um sudo apt-get install mysql-servercomando. No entanto, não foi direto, então aqui está o que eu tinha que fazer:

# Manually get mysql running if it is not
sudo touch /var/run/mysqld/mysql.sock
sudo chown mysql /var/run/mysqld/mysql.sock
sudo service mysql start

# take a dump of all databases 
# we are going to remove the mysql files so don't skip this)
mysqldump -u root -p > all-databases.sql

# Completely remove mysql
sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean

# Remove mysql 5.6 from debs (otherwise it will reinstall 5.6)
rm /etc/apt/sources.list.d/ondrej-(mysql something please check)

# remove a flag that would prevent the installation
# because it is seen as a downgrade
sudo rm /var/lib/mysql/debian-5.6.flag

# I had to remove the mysql files as well
# reference http://ubuntuforums.org/showthread.php?t=1998260&page=3
rm -rf /var/lib/mysql
rm -rf /etc/mysql*

# Install mysql
sudo apt-get install mysql-server mysql-client mysql-common php5-mysql

# manually update the all-databases.sql file and 
# remove all STATS_PERSISTENT clauses on table creation statments

# re import the databses
mysql -u root -p < all-databases.sql

# restart apache
sudo service apache2 restart

# at this point my wordpress site stated error connecting to database.
# This was resolved by logging into mysql and running:
FLUSH PRIVILEGES

Espero que isso ajude alguém com a mesma dor.

Programador
fonte
0

acho que isso pode ajudar os outros ... então aqui está.

Eu queria migrar meu mysql 5.5 (padrão do ubuntu) para o novo 5.7
(queria jogar arround com o novo tipo JSON nativo)

Eu segui as instruções para instalar a versão mais recente ....
mas o MySQL não queria iniciar.

Passei algum tempo procurando e depois encontrei esta linha no /var/log/mysql/errors.log:

unknown variable 'key_buffer=16M'

e isso é algo que /etc/mysql/my.cnf, durante a atualização, eu escolhi manter.

Então, muito fácil depois disso:
substitui o meu my.cnfpor uma my.cnf.dpkg-distversão localizada no mesmo diretório ...

Então teve que correr

sudo mysql_upgrade -u root -p sudo service mysql restart

e agora o MySQL está de volta em funcionamento

dGo
fonte
0

Encontrou outra variação sobre o que pode estar errado. Mudei o diretório de dados e acabei esquecendo de mostrar o diretório para o usuário mysql, que também falha com nenhuma saída. Obviamente errado em retrospectiva, mas a falta de mensagem de erro torna difícil encontrar todos os problemas triviais.

Kdansky
fonte