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

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

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

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

Ответ 1

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

Ответ 2

Убедитесь, что ваша служба mysql запущена

service mysqld start

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

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

mysql -u root

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

mysql -u root -p

Ответ 3

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

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

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

mysqladmin -u root -p status

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

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

который решил это для меня

Ответ 4

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

Ответ 5

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

Если вы найдете тот же файл в другом месте, а затем symlink его:

Для примера: у меня это в /data/mysql_datadir/mysql.sock

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

su mysql

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

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

Ответ 6

В моем случае я переместил файл сокета в другое место внутри /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

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

Ответ 7

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

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

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

mysql -u root -p

Ответ 8

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

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

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

Изменить на

socket=/opt/lampp/var/mysql/mysql.sock -u root

Ответ 9

Просто отредактируйте /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;

Ответ 10

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

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

expire_logs_days = 10
max_binlog_size = 100M

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

Ответ 11

Вот что сработало для меня:

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysqld restart

Ответ 12

MariaDB, разработанная сообществом разработчиков MySQL, стала стандартной версией MySQL во многих дистрибутивах.

Итак, сначала вы должны начать,

$ sudo systemctl start mariadb

Если это не удается, попробуйте

$ sudo systemctl start mysqld

Затем, чтобы запустить mysql,

$ mysql -u root -p

На сегодняшний день в Fedora пакет называется mariadb А в Ubuntu он называется mariadb-server.

Таким образом, вам может потребоваться установить его, если он еще не установлен в вашей системе.

Ответ 13

Проверьте, работает ли еще одна служба mysql.

Ответ 14

Убедитесь, что вы запустили сервер:

mysql.server start

Затем подключитесь к пользователю root:

mysql -uroot

Ответ 15

попробовать

echo 0 > /selinux/enforce

Ответ 16

если вы меняете файлы в /var/lib/mysql [например, копируете или заменяете это], вы должны установить владельца файлов в mysql, это так важно, если перезапуск mariadb.service был неудачным

chown -R mysql: mysql/var/lib/mysql/*

chmod -R 700/var/lib/mysql/*

Ответ 17

Если ваш mysql ранее работал и неожиданно остановился, просто перезагрузите сервер.

Столкнулся с этой проблемой на моем CentOS VPS.- >

Постоянно получал

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

Пробовал все методы, окончательно перезапустив сервер, исправил проблемы →

shutdown -r now

Надеюсь, это поможет!

Ответ 18

Сначала введите "service mysqld start" и войдите в систему

Ответ 19

Пожалуйста, убедитесь, что вы правильно установили сервер MySQL, я встречал эту ошибку много раз, и я думаю, что это сложно отлаживать из сокета, я имею в виду, что было бы проще переустановить его.

Если вы используете CentOS 7, вот правильный способ его установки:

Прежде всего, добавьте источник сообщества mysql
yum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

Затем вы можете установить его на yum install mysql-community-server

Запустите его с помощью systemctl: systemctl start mysqld

Ответ 20

Моя проблема заключалась в том, что я успешно установил mysql и работал нормально.

Но однажды произошла одна и та же ошибка.

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

И не существует файла mysql.sock.

Это решение разрешило мою проблему, и mysql снова и снова запускался:

Войдите в систему как пользователь root:

sudo su -

Run:

systemctl stop mysqld.service
systemctl start mysqld.service
systemctl enable mysqld.service

Проверить как root:

mysql -u root -p

mysql теперь должен быть запущен и запущен.

Я надеюсь, что это тоже поможет кому-то другому.

Ответ 21

Обратите внимание, что в то время как mysql считывает информацию о местоположении файла сокета из файла my.cnf, программа mysql_secure_installation, похоже, не делает это правильно время от времени.

Итак, если вы похожи на меня и перетасовываете вещи во время установки, вы можете попасть в ситуацию, когда вы можете подключиться к базе данных с помощью mysql просто отлично, но вещь не может быть защищена (не используя этот script в любом случае).

Чтобы исправить это, предложение от sreddy работает хорошо: сделайте softlink, откуда script ожидает, что сокет будет там, где он есть на самом деле. Пример:

ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

(я использую/tmp/в качестве местоположения по умолчанию для сокетов)

Ответ 22

Один из способов воспроизвести эту ошибку: если вы хотите подключиться к иностранному серверу, но вместо этого подключитесь к несуществующей локальной:

[email protected] ~ $ mysql -u dev -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through 
socket '/var/lib/mysql/mysql.sock' (2)
[email protected] ~ $

Итак, вы должны указать хост следующим образом:

[email protected] ~ $ mysql --host=yourdb.yourserver.com -u dev -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 235
Server version: 5.6.19 MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+-------------------------+
| Database                |
+-------------------------+
| information_schema      |
| mysql                   |
| performance_schema      |
+-------------------------+
3 rows in set (0.00 sec)

mysql> exit
Bye
[email protected] ~ $

Ответ 23

Это может быть глупое предложение, но на 100% убедитесь, что ваша БД все еще размещена на локальном хосте. Например, если администратор сети выбрал (или изменил) хостинг Amazon DB, вам понадобится это имя хоста!

Ответ 24

столкнулся с этой проблемой при попытке подключиться к mysql в SSH-клиенте, нашел добавление пути сокета к команде, полезной при переключении между сокетами.

> mysql -u user -p --socket=/path/to/mysql5143.sock

Ответ 25

Он работал у меня со следующими изменениями

Какой бы путь для сокета не упоминался в [mysqld] и тот же в [client] в my.cnf и перезагружать mysql

[туздЫ] socket =/var/lib/mysql/mysql.sock

[клиент] сокет =/вар/Library/MySQL/mysql.sock

Ответ 26

Это проблема, если у вас заканчивается дисковое пространство. Решение - освободить место на жестком диске.

Пожалуйста, прочитайте больше, чтобы получить объяснение:

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

 df 

если вы получаете что-то вроде этого:

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda2              5162828   4902260         0 100% /
udev                    156676        84    156592   1% /dev
/dev/sda3              3107124     70844   2878444   3% /home

Тогда это проблема, и теперь у вас есть решение!

Так как mysql.sock хочет быть создан в папке mysql, которая почти всегда находится под корневой папкой, ее невозможно достичь из-за нехватки места.

Если вы периодически используете команду ls в каталоге mysql (при openSUSE 11.1 находится в /var/lib/mysql ), вы получите что-то вроде:

hostname:/var/lib/mysql #
.protected  IT     files        ibdata1             mysqld.log  systemtemp
.tmp        NEWS   greekDB      mysql               mysqld.pid  test
ARXEIO      TEMP1  ib_logfile0  mysql.sock          polis
DATING      deisi  ib_logfile1  mysql_upgrade_info  restore

Файл mysql.sock часто появляется и исчезает (вы должны попробовать выделить с ls, чтобы попасть в экземпляр с файлом mysql.sock в папке).

Это вызвано нехваткой дискового пространства.

Я надеюсь, что я помогу некоторым людям!!!! Спасибо!

Ответ 27

Мне пришлось отключить explicit_defaults_for_timestamp из my.cnf.

Ответ 28

Попробуйте сначала 2, 3 решения. Ошибка - это всплывающее окно, и если вы не можете найти /var/lib/mysql/mysql.sock

find /var/ -name mysql.sock

Проверьте доступное пространство в /var/

df

Если каталог заполнен, удалите некоторые неиспользуемые файлы/каталоги

rm /var/cache/*

Вероятно, ваша проблема будет отсортирована сейчас.

Ответ 29

Если вы находитесь в оболочке sf.net, попробуйте:

mysql --host=mysql-{LETTER} --user={LETTER}{GROUP ID}admin -p

Измените {LETTER} и {GROUP ID}, как показано в базе данных MySQL для профиля проекта.

Ответ 30

В моем случае я импортировал новую базу данных, и после этого я не смог подключиться снова. Наконец я понял, что это проблема космоса.

Таким образом, вы можете удалить последнюю базу данных и расширить свой жесткий диск или, что я сделал, восстановил снимок моей виртуальной машины.

На всякий случай, если кто-то считает, что это полезно