Не вдається підключитися до локального сервера MySQL через сокет '/var/run/mysqld/mysqld.sock' (2)


9

У мене налаштування поштового сервера за допомогою dovecot + postfix + mysql, і це було нормально на сервері (сервер Ubuntu). Але протягом минулого тижня вона перестала працювати правильно. Він не надсилає електронну пошту. Коли я намагаюся telnet localhost smtpпідключитися, я успішно підключаюся, але коли я роблю mail from:<steve@example.com>і натискаю Enter, він зависає, нічого не відбувається.

Переглянувши /var/log/mail.logфайл, я виявив, що, ймовірно, (99%) проблема полягає в Postfix, коли він намагається підключитися до сервера MySQL. Якщо ви бачите файл журналу, наведений нижче, ви бачите, що він говорить 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

Я спробував, netstat -ln | grep mysqlі це повертається

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

Вміст /etc/postfix/mysql-virtual-alias-maps.cfфайлу тут:

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

Тут я спробував змінити, hosts = 127.0.0.1але це говоритьwarning: connect to mysql server 127.0.0.1: Can't connect to MySQL server on '127.0.0.1' (110)

Отже, я загублений і не знаю, де ще змінитись, щоб вирішити проблему. Будь-яка допомога буде високо оцінена.

Дякую.

РЕДАКТ 1

Коли я роблю netstat -на, я бачу, що mysql не прив'язується ні до localhost, ні до 127.0.0.1. Чи може це бути і проблемою?

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

Відповіді:


6

Це здається дуже дурним, але я вирішив проблему. Я не помічав, що системний адміністратор якось заблокував порт 3306 для всіх хостів на брандмауері, і тому я не зміг підключитися до mysql. Після видалення цього обмеження я зміг без проблем підключитися до mysql. Дякуємо за ваші пропозиції та допомогу.


1
Як зняти обмеження?
Зелений

Я хочу підключитися через TCP, а не через розетку. Як я можу це зробити? Дякую.
krisanalfa

Привіт @Green, будь-яке рішення, що ти маєш, як зняти обмеження, а точніше - як знайти обмеження на порт 3306?
Сушівам

3

У мене була схожа проблема. Зміна "hosts = localhost" на "hosts = 127.0.0.1" та встановлення bind-адреси на ту саму адресу зафіксували це для мене (bind-address чомусь встановлено на 0.0.0.0)


Я зміг залишити bind-адресу як 0.0.0.0 (що було необхідно для кластеризації, що я робив з галерою), і просто змінив "хост = 127.0.0.1: 3306", щоб переключити його на використання TCP. Я вирішив це замість того, щоб прив’язати гніздо до гнізда Postfix, як це робили інші.
Шон Рейфшнайдер

3

Ви намагалися підключитися до сервера Mysql?

mysql -u username -p

Також ви можете спробувати змінити адресу прослуховування в /etc/mysql/my.cnf на 127.0.0.1 та перезапустити MySQL

# /etc/mysql/my.cnf
bind-address = 127.0.0.1

Я зробив усе, що ви сказали, і результатів немає
Bakhtiyor

я маю на увазі, що я можу підключитися до mysql, використовуючи mysql -u ім'я користувача -p
Бахтіор

Має бути "my.cnf"
jnunn

2

Я саме отримував цю саму помилку на одному з комп'ютерів компанії.

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

Я також дуже часто отримував цю помилку, коли намагався запускати програми X-windows через 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

Виявляється, у мене була повністю заповнена коренева файлова система, не маючи вільного місця на диску, тому моя система не могла написати багато необхідних файлів. Я отримував всілякі помилки, пов’язані з багатьма різними програмами. (Не вдалося увійти через GDM, шпалери GDM стали чорними, помилки блокування файлу gconf тощо).

Все, що я зробив, це ввести цю просту команду, щоб позбутися від файлів у кореневому розділі на суму понад 400 Мб, які вже не потрібні.

sudo apt-get autoremove

Це дало моїй кореневій файловій системі необхідний дихальний простір. Зараз все працює чудово. Угадайте, що кореневого каталогу 10 Гб недостатньо, щоб обробляти оновлення Ubuntu протягом двох років.

Якщо когось не хвилює, система запускає Ubuntu 10.04 з моменту виходу. Система оновлюється не рідше одного разу на тиждень. Сьогоднішня дата 9-6-2012, тому оновлення майже 2 1/2 року.


коли ваша проблема - космос, я також пропоную askubuntu.com/questions/17432/…
ecoologic

+1 для вказівки на космічне питання - це вирішило мою проблему.
ювал

1

Нарешті мені допомогло очищення (не видалення!) Всіх пакетів apt-get, пов'язаних з mysql, за винятком libmysqlclient16яких було у статусі де-встановлення (не впевнений, що це таке).

Отже, просто робіть:

dpkg --get-selections | grep mysql

і потім:

sudo apt-get purge <package_name>

Почніть із загального, потім перейдіть до клієнта, а потім до сервера.


Я не думаю, що ця відповідь корисна. Проблемою був заблокований порт 3306, не зламані пакети MySQL.
Nephente

ЦЕ КОМАНДАlibmysqlclientXX
ВИДАЄТЬСЯ КОЖНІ

як знайти заблокований порт 3306?
Сушівам
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.