Nie można połączyć się z lokalnym serwerem MySQL przez gniazdo „/var/run/mysqld/mysqld.sock” (2)

9

Mam konfigurację serwera pocztowego za pomocą dovecot + postfix + mysql i działało poprawnie na serwerze (Ubuntu Server). Ale w ostatnim tygodniu przestało działać poprawnie. Nie wysyła wiadomości e-mail. Gdy próbuję telnet localhost smtpnawiązać połączenie, ale po nawiązaniu połączenia mail from:<[email protected]>i naciśnięciu klawisza Enter zawiesza się, nic się nie dzieje.

Po przejrzeniu /var/log/mail.logpliku dowiedziałem się, że prawdopodobnie (99%) problem dotyczy postfiksu, gdy próbuje on połączyć się z serwerem MySQL. Jeśli zobaczysz plik dziennika podany poniżej, zobaczysz, że zawiera on informację 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

Próbowałem netstat -ln | grep mysqli powraca

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

Treść /etc/postfix/mysql-virtual-alias-maps.cfpliku znajduje się tutaj:

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

Tutaj próbowałem zmienić, hosts = 127.0.0.1ale mówiwarning: connect to mysql server 127.0.0.1: Can't connect to MySQL server on '127.0.0.1' (110)

Jestem zagubiony i nie wiem, gdzie jeszcze się zmienić, aby rozwiązać problem. Każda pomoc będzie mile widziana.

Dziękuję Ci.

EDYCJA 1

Kiedy wykonuję netstat -na, widzę, że mysql nie jest powiązany ani z hostem lokalnym, ani z 127.0.0.1. Czy to może być problem?

bakhtiyor@ns1:~$ netstat -na | grep 3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN   
Bakhtiyor
źródło

Odpowiedzi:

6

Wydaje się to bardzo głupie, ale rozwiązałem problem. Nie zauważyłem, że administrator systemu jakoś zablokował port 3306 dla wszystkich hostów w zaporze ogniowej i dlatego nie mogłem połączyć się z mysql. Po usunięciu tego ograniczenia byłem w stanie połączyć się z mysql bez żadnych problemów. Dziękujemy za sugestie i pomoc.

Bakhtiyor
źródło
1
Jak usunąć ograniczenie?
Zielony,
Chcę się połączyć przez TCP, a nie przez gniazdo. Jak mogę to zrobić? Dzięki.
krisanalfa
Cześć @Green, czy masz jakieś rozwiązanie, jak usunąć ograniczenie, a raczej jak znaleźć, czy istnieją ograniczenia na porcie 3306?
Sushivam,
3

Miałem podobny problem. Zmiana „hosts = localhost” na „hosts = 127.0.0.1” i ustawienie adresu powiązania na ten sam adres naprawiło go (z jakiegoś powodu ustawiono adres powiązania na 0.0.0.0)

Jussi Timonen
źródło
Byłem w stanie zostawić adres wiązania jako 0.0.0.0 (który był niezbędny do tworzenia klastrów, które robiłem z Galera), i właśnie zmieniłem „host = 127.0.0.1: 3306”, aby przełączyć go na TCP. Zdecydowałem się na to zamiast montowania oprawki w chroocie Postfix, jak zrobili to inni.
Sean Reifschneider,
3

Czy próbowałeś połączyć się z serwerem Mysql?

mysql -u username -p

Możesz także spróbować zmienić adres nasłuchu w /etc/mysql/my.cnf na 127.0.0.1 i zrestartować MySQL

# /etc/mysql/my.cnf
bind-address = 127.0.0.1
Salem
źródło
Zrobiłem wszystko, co powiedziałeś i bez rezultatów
Bakhtiyor
mam na myśli, że mogę połączyć się z mysql przy użyciu mysql -u nazwa użytkownika -p
Bakhtiyor 15.11.11
Powinno być „my.cnf”
jnunn
2

Właśnie otrzymywałem ten sam błąd na jednym z komputerów firmy.

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

Ten błąd często pojawiał się, gdy próbowałem uruchomić programy X-Windows za pośrednictwem 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

Okazuje się, że miałem główny system plików, który był całkowicie zapełniony, bez wolnego miejsca na dysku, więc mój system nie mógł zapisać wielu niezbędnych plików. Otrzymywałem różnego rodzaju błędy związane z wieloma różnymi programami. (Nie można się zalogować przez GDM, tapeta GDM stała się czarna, błędy pliku blokady gconf itp.)

Wystarczyło wprowadzić to proste polecenie, aby pozbyć się niepotrzebnych plików na partycji głównej o wartości ponad 400 MB.

sudo apt-get autoremove

Dzięki temu mój główny system plików potrzebował miejsca do oddychania. Teraz wszystko działa świetnie. Zgadnij, że katalog główny o pojemności 10 GB nie wystarczy, aby obsłużyć aktualizacje Ubuntu w ciągu dwóch lat.

Jeśli ktoś się tym przejmuje, w systemie uruchomiono system Ubuntu 10.04, odkąd się pojawił. System aktualizuje się przynajmniej raz w tygodniu. Dzisiejsza data to 9-6-2012, więc to prawie 2 i pół roku aktualizacji.

Happy Gecko
źródło
gdy twoim problemem jest miejsce, proponuję również askubuntu.com/questions/17432/...
ekologiczny
+1 za wskazanie problemu z przestrzenią - to rozwiązało mój problem.
yuval
1

W końcu pomogło mi wyczyszczenie (nie usunięcie!) Wszystkich pakietów apt-get związanych z mysql, z wyjątkiem libmysqlclient16których był w stanie deinstalacji (nie jestem pewien, co to jest).

Więc po prostu wykonaj:

dpkg --get-selections | grep mysql

i wtedy:

sudo apt-get purge <package_name>

Zacznij od wspólnego, a następnie przejdź do klienta, a następnie serwera.

Gilad Shahrabani
źródło
Nie sądzę, aby ta odpowiedź była pomocna. Problemem był zablokowany port 3306, a nie uszkodzone pakiety MySQL.
Nephente
NINIEJSZE POLECENIE USUŃ DOWOLNE PAKIETYlibmysqlclientXX
ZALEŻNE
jak znaleźć zablokowany port 3306?
Sushivam,