Impossible de se connecter au serveur MySQL local via le socket '/var/run/mysqld/mysqld.sock' (2)

9

J'ai configurer le serveur de messagerie en utilisant dovecot + postfix + mysql et il fonctionnait très bien sur le serveur (Ubuntu Server). Mais la semaine dernière, il a cessé de fonctionner correctement. Il n'envoie pas d'e-mail. Lorsque j'essaie de telnet localhost smtpme connecter avec succès, mais lorsque je le fais mail from:<[email protected]>et que j'appuie sur Entrée, il se bloque, rien ne se passe.

Après avoir examiné le /var/log/mail.logfichier, j'ai découvert que probablement (99%) le problème est sur le suffixe lorsqu'il essaie de se connecter au serveur MySQL. Si vous voyez le fichier journal donné ci-dessous, vous pouvez voir qu'il dit 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

J'ai essayé netstat -ln | grep mysqlet ça revient

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

Le contenu du /etc/postfix/mysql-virtual-alias-maps.cffichier est ici:

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

Ici j'ai essayé de changer hosts = 127.0.0.1mais ça ditwarning: connect to mysql server 127.0.0.1: Can't connect to MySQL server on '127.0.0.1' (110)

Donc, je suis perdu et je ne sais pas où changer pour résoudre le problème. Toute aide serait grandement appréciée.

Je vous remercie.

EDIT 1

Quand je fais netstat -na, je vois que mysql n'est lié ni à localhost ni à 127.0.0.1. Serait-ce aussi le problème?

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

Réponses:

6

Cela semble très stupide mais j'ai résolu le problème. Je n'avais pas remarqué qu'un administrateur système avait en quelque sorte bloqué le port 3306 pour tous les hôtes du pare-feu, et donc je ne pouvais pas me connecter à mysql. Après avoir supprimé cette restriction, j'ai pu me connecter à mysql sans aucun problème. Merci pour vos suggestions et votre aide.

Bakhtiyor
la source
1
Comment supprimer la restriction?
Vert
Je veux me connecter via TCP, pas via un socket. Comment puis je faire ça? Merci.
krisanalfa
Salut @Green, avez-vous trouvé une solution pour supprimer la restriction ou plutôt pour savoir s'il existe une restriction sur le port 3306?
Sushivam
3

J'avais un problème similaire. La modification de "hosts = localhost" en "hosts = 127.0.0.1" et la définition de l'adresse de liaison sur la même adresse l'a corrigé pour moi (l'adresse de liaison a été définie à 0.0.0.0 pour une raison quelconque)

Jussi Timonen
la source
J'ai pu laisser bind-address à 0.0.0.0 (ce qui était nécessaire pour le clustering que je faisais avec galera), et j'ai juste changé "host = 127.0.0.1: 3306" pour le changer en utilisant TCP. J'ai décidé de cela au lieu de monter le socket dans le chroot Postfix comme d'autres l'ont fait.
Sean Reifschneider
3

Avez-vous essayé de vous connecter au serveur Mysql?

mysql -u username -p

Vous pouvez également essayer de changer l'adresse d'écoute dans /etc/mysql/my.cnf en 127.0.0.1 et redémarrer MySQL

# /etc/mysql/my.cnf
bind-address = 127.0.0.1
Salem
la source
J'ai fait tout ce que vous avez dit et aucun résultat
Bakhtiyor
je veux dire que je peux
me
Devrait être "my.cnf"
jnunn
2

Je venais de recevoir cette même erreur sur l'un des ordinateurs de l'entreprise.

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

J'obtenais également beaucoup cette erreur lorsque j'ai essayé d'exécuter des programmes X-windows via 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

Il s'avère que j'avais un système de fichiers racine qui était complètement rempli, sans espace disque libre, donc mon système ne pouvait pas écrire beaucoup de fichiers nécessaires. J'obtenais toutes sortes d'erreurs, liées à de nombreux programmes différents. (Impossible de se connecter via GDM, le fond d'écran GDM est devenu noir, les erreurs du fichier de verrouillage gconf, etc ...)

Tout ce que j'ai fait était d'entrer cette commande simple pour se débarrasser de plus de 400 Mo de fichiers dans la partition racine qui n'étaient plus nécessaires.

sudo apt-get autoremove

Cela a donné à mon système de fichiers racine l'espace de respiration dont il avait besoin. Maintenant, tout va bien. Je suppose qu'un répertoire racine de 10 Go ne suffit pas pour gérer plus de deux ans de mises à jour d'Ubuntu.

Si quelqu'un s'en soucie, le système exécute Ubuntu 10.04 depuis sa sortie. Le système se met à jour au moins une fois par semaine. La date d'aujourd'hui est le 9-6-2012, c'est donc presque 2 ans et demi de mises à jour.

Gecko heureux
la source
lorsque votre problème est lié à l'
ecoologic
+1 pour avoir signalé un problème d'espace - cela a résolu mon problème.
yuval
1

Ce qui m'a finalement aidé, c'est la purge (et non la suppression!) De tous les paquets apt-get liés à mysql, à l'exception de ceux libmysqlclient16qui étaient en état de désinstallation (je ne sais pas trop ce que c'est).

Alors, faites simplement:

dpkg --get-selections | grep mysql

et alors:

sudo apt-get purge <package_name>

Commencez par commun puis allez au client puis au serveur.

Gilad Shahrabani
la source
Je ne pense pas que cette réponse soit utile. Le problème était le port 3306 bloqué, pas les paquets MySQL cassés.
Nephente
CETTE COMMANDE SUPPRIMERA TOUS LESlibmysqlclientXX
PAQUETS DÉPEND
comment trouver le port bloqué 3306?
Sushivam