erro: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)' -- Falta /var/run/mysqld/mysqld.sock
Meu problema começou com o fato de eu não poder mais entrar como root na minha instalação do mysql. Eu estava tentando rodar o mysql sem senhas ativadas... mas sempre que eu executava o comando
# mysqld_safe --skip-grant-tables &
Eu nunca recuperaria a urgência. Eu estava tentando seguir estas instruções para recuperar a senha.
O ecrã tem este aspecto:
root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables
120816 11:40:53 mysqld_safe Logging to syslog.
120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
e eu não't recebo uma solicitação para começar a digitar os comandos SQL para redefinir a senha.
Quando o mato pressionando CTRL + C recebo a seguinte mensagem:
error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!
Se eu repetir o comando e o deixar por tempo suficiente, recebo a seguinte série de mensagens:
root@jj-SFF-PC:/run/mysqld# 120816 13:15:02 mysqld_safe Logging to syslog.
120816 13:15:02 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120816 13:16:42 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
[1]+ Done mysqld_safe --skip-grant-tables
root@jj-SFF-PC:/run/mysqld#
Mas então se eu tentar entrar como raiz, fazendo:
# mysql -u root
Eu recebo a seguinte mensagem de erro:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Eu verifiquei e o arquivo /var/run/mysqld/mysqld.sock
não't não existe. A pasta existe, mas não o arquivo.
Também não sei se isso ajuda ou não, mas eu corri find / -name mysqld
e isso veio à tona:
/var/run/mysqld - folder
/usr/sbin/mysqld - file
/run/mysqld - folder
I'sou novo no Linux e no MySQL, por isso não sei se isto é normal ou não. Mas I'm incluindo esta informação para o caso de ajudar.
Decidi finalmente desinstalar e reinstalar o mysql.
apt-get remove mysql-server
apt-get remove mysql-client
apt-get remove mysql-common
apt-get remove phpmyadmin
Depois de reinstalar todos os pacotes novamente na mesma ordem como acima, durante a instalação do phpmyadmin, eu recebi o mesmo erro:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Por isso, tentei desinstalar/reinstalar novamente. Desta vez, depois de desinstalar os pacotes, também renomeei manualmente todos os arquivos e diretórios do mysql para mysql.bad
em suas respectivas localizações.
/var/lib/mysql
/var/lib/mysql/mysql
/var/log/mysql
/usr/lib/perl5/DBD/mysql
/usr/lib/perl5/auto/DBD/mysql
/usr/lib/mysql
/usr/bin/mysql
/usr/share/mysql
/usr/share/dbconfig-common/internal/mysql
/etc/init.d/mysql
/etc/apparmor.d/abstractions/mysql
/etc/mysql
Depois tentei reinstalar o mysql-server
e o mysql-client
novamente. Mas eu'notei que ele não'não me pede uma senha. É'ele não deveria pedir uma senha de administrador?
Para encontrar todos os ficheiros de socket no seu sistema, execute:
O meu sistema servidor Mysql tinha o socket aberto em `/var/lib/mysql/mysql.sock'.
Uma vez que você encontre onde o socket está sendo aberto, adicione ou edite a linha no seu arquivo /etc/my.cnf com o caminho para o arquivo do socket:
Algumas vezes o script de inicialização do sistema que lançou o executável de linha de comando especifica uma bandeira
--socket=caminho
. Esta flag pode sobrescrever a localização my.cnf, e isso resultaria em um socket não ser encontrado onde o arquivo my.cnf indica que ele deve estar. Então quando você tentar executar o cliente de linha de comando mysql, ele irá ler my.cnf para encontrar o socket, mas não irá encontrá-lo, pois ele se desvia de onde o servidor o criou. Então, a menos que você se importe onde o socket reside, apenas mudar o my.cnf para corresponder deve funcionar.Então, pare o processo mysqld. Como você faz isso vai variar de acordo com o sistema.
Se você'é super usuário no sistema linux, tente um dos seguintes se você não'não conhece o método específico que sua configuração Mysql usa:
*service mysqld stop''.
pkill -9 mysqld
pgrep mysql' ou
ps aux | grep mysql | grep -v grep'.4969
termina comkill -9 4969
.Depois de fazer isso você pode querer procurar por um arquivo pid em
/var/run/mysqld/
e excluí-loCertifique-se de que as permissões no seu socket são tais que qualquer usuário mysqld está rodando como pode ler/escrever para ele. Um teste fácil é abrir até a leitura/escrita completa e ver se ainda funciona:
Se isso resolver o problema, você pode adaptar as permissões e a propriedade do soquete conforme necessário, com base nas suas configurações de segurança.
Além disso, o diretório onde o socket reside tem que ser acessível pelo usuário executando o processo mysqld.
A solução é muito mais fácil.
mysql.sock
está localizado. No meu caso estava em `/opt/lampp/var/mysql/mysql.sock'.sudo Nautilus
Isto inicia o seu gestor de ficheiros com super privilégios de utilizador
mysql.sock
está localizado.mysqld.sock
e clique com o botão direito do mouse no arquivo e Cortar o arquivo/var/run' e crie uma pasta chamada
mysqld' e digite-amysqld.sock
em/var/run/mysqld/mysqld.sock
:)Eu enfrentei o mesmo erro e descobri que era devido a atualizações de pacotes, então depois de reiniciar o meu sistema eu resolvi o erro.
Acho que devido à atualização de bibliotecas/ pacotes sql esse erro ocorreu, então tente isso se você estiver fazendo alguma atualização :)