2010-12-15 2 views
204

Я получаю следующее сообщение об ошибке при попытке подключиться к MySQL:Не удается подключиться к локальному серверу MySQL через гнездо «/var/lib/mysql/mysql.sock» (2)

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

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

+0

Я ответил на это здесь, пожалуйста, проверьте ссылку ниже: http://stackoverflow.com/a/35577309/4773290 – 2016-02-23 12:15:44

ответ

171

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

+0

У меня все еще есть ошибка сохранения с использованием 127.0.0.1 вместо loclahost – 2014-01-24 10:31:31

+21

В этом случае вам, вероятно, стоит проверить, действительно ли ваш сервер MYSQL запущен. – 2014-01-25 08:48:58

+2

Вы также можете принудительно использовать сокет с параметром сокета (-S с/usr/bin/mysql) и принудительно использовать TCP/IP, предоставляя порт (-P с помощью/usr/bin/mysql.) – Kaoru 2014-06-01 11:17:34

19

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

+0

У меня возникла проблема, описанная выше, и это была проблема. Благодарю. – oshirowanen 2014-01-11 19:14:41

+3

Где это будет для Homebrew install? – pal4life 2014-08-08 15:05:00

8

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

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

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

Изменения в

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

Привет, Секар, я ввел «find/-name my.cnf ", и у меня два места: 1) /opt/lampp/etc/my.cnf 2) /etc/mysql/my.cnf. Итак, какой из них использовать. Я задал здесь вопрос .. http: /stackoverflow.com/questions/32437796/bind-address-not-present-in-my-cnf-file-laravel/ – 2015-09-07 13:38:36

22

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

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

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

mysqladmin -u root -p status 

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

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

, что решить это для меня

+0

Он работает и для меня, но после того, как я обновился до последней версии, эта проблема возникла, может быть, я знаете, почему это происходит? – Ben 2017-06-30 09:46:07

15

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

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

+0

переименовать mysql.sock в другое, а затем перезапустить mysqld («service mysqld restart»), а затем переименовать что-то еще в mysql.sock для меня. Небольшая вариация этого ответа, так спасибо. – fuzzyanalysis 2014-06-28 06:35:46

+0

[ Это] (http://stackoverflow.com/a/25650062/1446845) ответ может помочь найти файл `mysql.sock` – Nobita 2016-07-28 12:30:14

2

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

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

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

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

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

shutdown -r now

Надеется, что это помогает !!

+1

service mysqld restart делает тот же трюк – DDdW 2016-09-02 07:32:04

+0

Все еще не работает! – Pablo 2017-10-19 10:54:51

156

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

service mysqld start 

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

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

mysql -u root 

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

mysql -u root -p 
2

Сначала введите «сервис mysqld start» и войдите в систему

7

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

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

4

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

-1

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

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

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

socket=<path to the mysql socket file> 

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

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

в моем случае, так как я переместил папку данных MySQL по умолчанию (/ VAR/Lib/MySQL) в другом месте (/ данные/mysql), я добавил в .my.cnf следующее:

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

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

1

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

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

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

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

Это гуманного решить мою проблему и MySQL был запущен снова:

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

sudo su - 

Run:

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

испытания в качестве корня:

mysql -u root -p 

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

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

1

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

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

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

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

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

8

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

5

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

0

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

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

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

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

[туздЫ] сокет =/вар/Библиотека/MySQL/mysql.sock

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

0

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

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

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

Если вы periodicaly дать команду LS в директории MySQL (в OpenSUSE 11.1 находится в/вар/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 в папке).

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

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

4

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

mysql.server start 

Затем соединить с суперпользователя:

mysql -uroot 
0

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

1

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

[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] ~ $ 
0

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

find /var/ -name mysql.sock 

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

df 

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

rm /var/cache/* 

Возможно, ваш вопрос будет отсортирован.

5

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

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

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

2

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

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

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

0

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

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

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

-2

так он говорит вам, что они не могут найти файл сокета в «/var/lib/mysql/mysql.sock»

что вы будете делать это нужно подключить MySQL.Носок файл к нему, скорее всего, именно в /tmp/mysql.sock если файл Безразлично»существует создать его, используя

touch /tmp/mysql.sock 

, а затем выполнить

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

к сведению, если нет каталога MySQL внутри /var/lib создать его

mkdir mysql

обновите свое приложение

1

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

7

Если вы на недавнем RHEL, вам может понадобиться, чтобы начать MariaDB (с открытым исходным кодом MySQL БД) вместо БД MySQL:

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

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

mysql -u root -p 
5

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

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

$ sudo systemctl start mariadb 

Если это не помогает, а попробовать,

$ sudo systemctl start mysqld 

Затем, чтобы начать MySQL,

$ mysql -u root -p 

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

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

Смежные вопросы