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

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

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

есть ли решение этой ошибки? Какова может быть причина?

30 ответов


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


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

service mysqld start

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

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

mysql -u root

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

mysql -u root -p

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

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

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

mysqladmin -u root -p status

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

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

это решило его для меня


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


скорее всего 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

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


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

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

проблема заключается в том, как настроен клиент. Запуск диагностики фактически покажет правильный путь сокета. например!--6-->

работает:

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

не работает:

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

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


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

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

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

mysql -u root -p

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

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

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

заменить на

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

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

[mysqld]

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

[client]

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

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

mysql-u user-p password database-H host;


убедитесь, что у вас достаточно места в /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

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


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

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

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

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

$ sudo systemctl start mariadb

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

$ sudo systemctl start mysqld

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

$ mysql -u root -p

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

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


пожалуйста, проверьте, работает ли другая служба mysql.


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

mysql.server start

затем соединитесь с пользователем root:

mysql -uroot

попробовать

echo 0 > /selinux/enforce

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

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

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


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

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

был постоянно

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

пробовал все методы, наконец, перезапуск сервера исправил проблемы ->

shutdown -r now

надеюсь, что это помогает !!


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


пожалуйста, убедитесь, что вы правильно установили сервер 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


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

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

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

и нет mysql.файл носков существовал.

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

войти в систему в качестве root:

sudo su -

Run:

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

тест как root:

mysql -u root -p

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

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


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

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

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

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

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


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

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

поэтому вы должны указать хост такой:

eric@dev ~ $ 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
eric@dev ~ $

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


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

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

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

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

[mysqld] гнездо=в/var/библиотека/MySQL в/в MySQL.носок!--1-->

[клиент] гнездо=в/var/библиотека/MySQL в/в MySQL.носок!--1-->


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

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

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

 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.носок хочет быть создан в 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.носок файл появляется и исчезает часто (вы должны попробовать выделить с ls, чтобы поразить экземпляр с mysql.носок файл на папку).

это вызвано недостаточным дисковым пространством.

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


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


попробуйте первые 2, 3 решения. Ошибка stil popup & если вы не можете найти /var/lib/mysql/mysql.sock

find /var/ -name mysql.sock

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

df

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

rm /var/cache/*

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


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

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

измените {букву} и {идентификатор группы} , как показано в вашей базе данных MySQL профиля администратора проекта.


просто дождь в ту же проблему-и вот как я ее решил.

предполагая, что mysqld работает, тогда проблема может быть просто клиентом mysql, не зная, где искать файл сокета.

самый простой способ решить эту проблему заключается в добавлении следующей строки в профиль пользователя .мой.cnf-файл (в linux, который обычно находится под /home / myusername):

socket=<path to the mysql socket file>

Если у вас нет .мой.cnf файл там, а затем создать один, содержащий следующее:

[mysql]
socket=<path to the mysql socket file>

в моем случае, так как я переместил папку данных mysql по умолчанию (/var/lib/mysql) в другое место (/data/mysql), я добавил .мой.cnf следующее:

[mysql]
socket=/data/mysql/mysql.sock

надеюсь, что это помогает.