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

9

Eu tenho o servidor de correio configurado usando dovecot + postfix + mysql e estava funcionando muito bem no servidor (Ubuntu Server). Mas durante a semana passada ele parou de funcionar corretamente. Não envia email. Quando tento telnet localhost smtpme conectar com êxito, mas quando faço mail from:<[email protected]>e pressiono Enter, ele permanece, nada acontece.

Tendo revisado o /var/log/mail.logarquivo, descobri que provavelmente (99%) o problema está no postfix quando ele está tentando se conectar ao servidor MySQL. Se você vir o arquivo de log fornecido abaixo, poderá ver o que ele diz Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2).

Nov 14 21:54:36 ns1 dovecot: dovecot: Killed with signal 15 (by pid=7731 uid=0 code=kill)
Nov 14 21:54:36 ns1 dovecot: Dovecot v1.2.9 starting up (core dumps disabled)
Nov 14 21:54:36 ns1 dovecot: auth-worker(default): mysql: Connected to localhost (mailserver)
Nov 14 21:54:44 ns1 postfix/postfix-script[7753]: refreshing the Postfix mail system
Nov 14 21:54:44 ns1 postfix/master[1670]: reload -- version 2.7.0, configuration /etc/postfix
Nov 14 21:54:52 ns1 postfix/trivial-rewrite[7759]: warning: connect to mysql server localhost: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Nov 14 21:54:52 ns1 postfix/trivial-rewrite[7759]: fatal: mysql:/etc/postfix/mysql-virtual-alias-maps.cf(0,lock|fold_fix): table lookup problem
Nov 14 21:54:53 ns1 postfix/master[1670]: warning: process /usr/lib/postfix/trivial-rewrite pid 7759 exit status 1
Nov 14 21:54:53 ns1 postfix/cleanup[7397]: warning: problem talking to service rewrite: Connection reset by peer
Nov 14 21:54:53 ns1 postfix/master[1670]: warning: /usr/lib/postfix/trivial-rewrite: bad command startup -- throttling
Nov 14 21:54:53 ns1 postfix/smtpd[7071]: warning: problem talking to service rewrite: Success

Eu tentei netstat -ln | grep mysqle ele retorna

unix 2 [ ACC ] STREAM LISTENING 5817 /var/run/mysqld/mysqld.sock.

O conteúdo do /etc/postfix/mysql-virtual-alias-maps.cfarquivo está aqui:

user = stevejobs
password = apple
hosts = localhost
dbname = mailserver
query = SELECT destination FROM virtual_aliases WHERE source='%s'

Aqui eu tentei mudar, hosts = 127.0.0.1mas dizwarning: connect to mysql server 127.0.0.1: Can't connect to MySQL server on '127.0.0.1' (110)

Então, eu estou perdido e não sei mais onde mudar para resolver o problema. Qualquer ajuda seria muito apreciada.

Obrigado.

EDIT 1

Quando eu faço netstat -na, vejo que o mysql não está vinculado nem ao localhost nem ao 127.0.0.1. Poderia ser o problema também?

bakhtiyor@ns1:~$ netstat -na | grep 3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN   
Bakhtiyor
fonte

Respostas:

6

Parece muito estúpido, mas eu resolvi o problema. Eu não tinha notado que um administrador do sistema de alguma forma bloqueou a porta 3306 para todos os hosts no firewall e, portanto, não consegui conectar ao mysql. Depois de remover essa restrição, consegui conectar-me ao mysql sem problemas. Obrigado por suas sugestões e ajuda.

Bakhtiyor
fonte
1
Como remover a restrição?
Verde
Eu quero conectar via TCP, não através de um soquete. Como eu posso fazer isso? Obrigado.
Krisanalfa #
Oi @Green, qualquer solução que você tenha sobre como remover a restrição ou melhor, como descobrir se há restrição na porta 3306?
Sushivam 11/11
3

Eu tive um problema parecido. Alterar "hosts = localhost" para "hosts = 127.0.0.1" e definir o endereço de ligação para o mesmo endereço foi corrigido para mim (o endereço de ligação foi definido como 0.0.0.0 por algum motivo)

Jussi Timonen
fonte
Consegui deixar o endereço de ligação como 0.0.0.0 (o que era necessário para o clustering que estava fazendo com o galera) e apenas mudei "host = 127.0.0.1: 3306" para mudar para o TCP. Decidi isso em vez de montar o soquete no chroot Postfix, como outros fizeram.
Sean Reifschneider
3

Você já tentou se conectar ao servidor Mysql?

mysql -u username -p

Além disso, você pode tentar alterar o endereço de escuta em /etc/mysql/my.cnf para 127.0.0.1 e reiniciar o MySQL

# /etc/mysql/my.cnf
bind-address = 127.0.0.1
Salem
fonte
Eu fiz todos que você disse e nenhum resultado
Bakhtiyor
Quer dizer, eu posso conectar ao MySQL usando mysql -u usuário -p
Bakhtiyor
Deveria ser "my.cnf"
jnunn,
2

Eu estava recebendo o mesmo erro em um dos computadores da empresa.

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

Eu também estava recebendo muito esse erro ao tentar executar programas do X-windows através do ssh:

GConf Error: Failed to contact configuration server; 
some possible causes are that you need to enable TCP/IP networking for ORBit,
or you have stale NFS locks due to a system crash

Acontece que eu tinha um sistema de arquivos raiz completamente preenchido, sem espaço livre em disco, então meu sistema não conseguiu gravar muitos arquivos necessários. Eu estava recebendo todos os tipos de erros, relacionados a muitos programas diferentes. (Não foi possível efetuar login através do GDM, o papel de parede do GDM ficou preto, erros no arquivo de bloqueio do gconf, etc ...)

Tudo o que fiz foi digitar este comando simples para livrar-se de mais de 400 MB de arquivos na partição raiz que não eram mais necessários.

sudo apt-get autoremove

Isso deu ao meu sistema de arquivos raiz o espaço necessário para respirar. Agora tudo corre muito bem. Acho que um diretório raiz de 10 GB não é suficiente para lidar com mais de dois anos de atualizações do Ubuntu.

Se alguém se importa, o sistema está executando o Ubuntu 10.04 desde que foi lançado. O sistema é atualizado pelo menos uma vez por semana. A data de hoje é 9/6/2012, o que representa quase 2 anos e meio de atualizações.

Geco feliz
fonte
quando seu problema é espaço, eu também sugiro askubuntu.com/questions/17432/…
ecoologic
+1 por apontar problema de espaço - isso resolveu meu problema.
Yuval
1

O que finalmente me ajudou foi a remoção (não a remoção!) De todos os pacotes apt-get relacionados ao mysql, com exceção dos libmysqlclient16que estavam no status de desinstalação (não tenho certeza do que é isso).

Então, faça:

dpkg --get-selections | grep mysql

e depois:

sudo apt-get purge <package_name>

Comece do comum e depois vá para o cliente e depois para o servidor.

Gilad Shahrabani
fonte
Não acho que essa resposta seja útil. O problema foi a porta 3306 bloqueada, não os pacotes MySQL quebrados.
Nephente 4/10
Este comando irá remover quaisquer pacotes dependelibmysqlclientXX
krisanalfa
como encontrar a porta bloqueada 3306?
Sushivam 11/11/16