Не удается подключиться к локальному серверу MySQL через сокет '/var/lib/mysql/mysql.sock' (2) - PullRequest
237 голосов
/ 15 декабря 2010

Я получаю следующую ошибку при попытке подключиться к mysql:

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

Есть ли решение для этой ошибки? Что может быть причиной этого?

Ответы [ 32 ]

208 голосов
/ 15 декабря 2010

Вы подключаетесь к "localhost" или "127.0.0.1"?Я заметил, что при подключении к «localhost» используется разъем сокета, но при подключении к «127.0.0.1» используется разъем TCP / IP.Вы можете попробовать использовать «127.0.0.1», если разъем сокета не включен / не работает.

174 голосов
/ 13 декабря 2012

Убедитесь, что ваша служба MySQL работает

service mysqld start

Затем попробуйте выполнить одно из следующих действий:

(если вы не установили пароль для mysql)

mysql -u root

если вы уже установили пароль

mysql -u root -p
26 голосов
/ 10 ноября 2011

Если ваш файл my.cnf (обычно в папке etc) правильно настроен на

socket=/var/lib/mysql/mysql.sock

, вы можете проверить, работает ли mysql, с помощью следующей команды:

mysqladmin -u root -p status

попробуйте изменить свое разрешение на папку MySQL.Если вы работаете локально, вы можете попробовать:

sudo chmod -R 777 /var/lib/mysql/

, который решил это за меня

20 голосов
/ 15 декабря 2010

Сервер MySQL не работает, или это не местоположение его файла сокета (проверьте my.cnf).

18 голосов
/ 22 февраля 2012

Скорее всего mysql.sock не существует в /var/lib/mysql/.

Если вы найдете тот же файл в другом месте, используйте символическую ссылку:

Например: у меня есть /data/mysql_datadir/mysql.sock

Переключите пользователя на mysql и выполните, как указано ниже:

su mysql

ln -s /data/mysql_datadir/mysql.sock /var/lib/mysql/mysql.sock

Это решило мою проблему

12 голосов
/ 27 мая 2016

Если вы используете недавний RHEL, вам может потребоваться запустить mariadb (MySQL DB с открытым исходным кодом) вместо mysql db:

yum remove mysql
yum -y install mariadb-server mariadb
service mariadb start

После этого вы сможете получить доступ к mysql обычным способом:

mysql -u root -p
12 голосов
/ 21 октября 2013

В моем случае я переместил файл сокета в другое место внутри /etc/my.cnf от /var/lib/mysql/mysql.sock до /tmp/mysql.sock

Даже после перезапуска службы mysqld, я все еще вижу сообщение об ошибке при попытке подключиться. ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

Проблема в том, как настроен клиент. Во время диагностики на самом деле будет показан правильный путь к сокету. например, ps aux | grep mysqld

Работает:

mysql -uroot -p -h127.0.0.1
mysql -uroot -p --socket=/tmp/mysql.sock

Не работает:

mysql -uroot -p
mysql -uroot -p -hlocalhost

Вы можете исправить эту проблему, добавив ту же строку socket в разделе [client] внутри конфигурации mysql.

11 голосов
/ 13 июня 2011

Проверьте, запущена ли ваша служба mysqld, если не запущена, запустите службу.

Если ваша проблема не решена, найдите /etc/my.cnf и измените следующим образом, где вы видите строкуначиная с socket.Сделайте резервную копию этого файла, прежде чем делать это обновление.

socket=/var/lib/mysql/mysql.sock  

Изменить на

socket=/opt/lampp/var/mysql/mysql.sock -u root
11 голосов
/ 13 ноября 2013

Просто отредактируйте /etc/my.cnf Добавьте следующие строки в my.cnf

[mysqld]

socket=/var/lib/mysql/mysql.sock 

[client]

socket=/var/lib/mysql/mysql.sock

Перезапустите mysql и подключитесь снова

mysql -u user -p база паролей -h host;

7 голосов
/ 14 мая 2013

Убедитесь, что в /var осталось достаточно места. Если Mysql demon не может записать дополнительную информацию на диск, сервер mysql не запустится, что приведет к ошибке Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

Рассмотрите возможность использования

expire_logs_days = 10
max_binlog_size = 100M

Это поможет вам снизить использование диска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...