Я получаю следующую ошибку при попытке подключиться к mysql:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Есть ли решение для этой ошибки? Что может быть причиной этого?
Я получаю следующую ошибку при попытке подключиться к mysql:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Есть ли решение для этой ошибки? Что может быть причиной этого?
Ответы:
Вы подключаетесь к "localhost" или "127.0.0.1"? Я заметил, что при подключении к «localhost» используется разъем сокета, но при подключении к «127.0.0.1» используется разъем TCP / IP. Вы можете попробовать использовать «127.0.0.1», если разъем сокета не включен / не работает.
/etc/hosts
файл в моем док-контейнере, я увидел имя хоста MySql mysql
. Использование этого же имени хоста в моей конфигурации подключения решило проблему.
Убедитесь, что ваш сервис MySQL работает
service mysqld start
Затем попробуйте выполнить одно из следующих действий:
(если вы не установили пароль для mysql)
mysql -u root
если вы уже установили пароль
mysql -u root -p
service mariadb start
потому что mariadb.org/debian-9-released-mariadb-mysql-variant
Если ваш файл my.cnf (обычно в папке etc) правильно настроен с
socket=/var/lib/mysql/mysql.sock
Вы можете проверить, работает ли mysql с помощью следующей команды:
mysqladmin -u root -p status
попробуйте изменить свое разрешение на папку MySQL. Если вы работаете локально, вы можете попробовать:
sudo chmod -R 777 /var/lib/mysql/
это решило это для меня
Сервер MySQL не работает, или это не местоположение его файла сокета (проверьте my.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
Это решило мою проблему
Если вы используете недавний RHEL, вам может потребоваться запустить mariadb (mysql db с открытым исходным кодом) вместо mysql db:
yum remove mysql
yum -y install mariadb-server mariadb
service mariadb start
После этого вы сможете получить доступ к mysql обычным способом:
mysql -u root -p
mariadb-server
и mariadb
не забудьте запустить, mysql_secure_installation
чтобы очистить некоторые небезопасные настройки по умолчанию.
В моем случае я переместил файл сокета в другое место внутри /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.
Просто отредактируйте /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;
Проверьте, работает ли ваша служба mysqld или нет, если не запущена, запустите службу.
Если ваша проблема не решена, найдите /etc/my.cnf
и измените ее следующим образом, где вы увидите строку, начинающуюся с socket
. Сделайте резервную копию этого файла, прежде чем делать это обновление.
socket=/var/lib/mysql/mysql.sock
Изменить на
socket=/opt/lampp/var/mysql/mysql.sock -u root
MariaDB, сообщество MySQL, разработанное сообществом, стало реализацией MySQL по умолчанию во многих дистрибутивах.
Итак, сначала вы должны начать,
$ sudo systemctl start mariadb
Если это не удается, попробуйте,
$ sudo systemctl start mysqld
Затем, чтобы начать MySQL,
$ mysql -u root -p
На сегодняшний день в Fedora пакет называется mariadb
А в Ubuntu он называется mariadb-server
.
Поэтому вам, возможно, придется установить его, если он еще не установлен в вашей системе.
Убедитесь, что у вас достаточно места /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
Это поможет вам снизить использование диска.
innodb_buffer_pool_size
в my.cnf
. Установка небольшого значения, как innodb_buffer_pool_size = 50M
это хороший тест, чтобы отбросить эту гипотезу;)
Вот что сработало для меня:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysqld restart
Пожалуйста, проверьте, работает ли другой сервис mysql.
Убедитесь, что вы запустили сервер:
mysql.server start
Затем соединитесь с пользователем root:
mysql -uroot
Если ваш mysql ранее работал и внезапно остановился, просто "перезагрузите" сервер.
Столкнулся с этой проблемой на моем CentOS VPS .->
Постоянно получал
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'(2)
Перепробовал все приемы, наконец перезапустив сервер исправил проблемы ->
shutdown -r now
Надеюсь это поможет !!
если вы измените файлы в / var / lib / mysql [например, скопируйте или замените их], вы должны установить для владельца файлов значение mysql, это так важно, если перезапуск mariadb.service не удался
chown -R mysql: mysql / var / lib / mysql / *
chmod -R 700 / var / lib / mysql / *
Сначала введите «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 через сокет '/var/lib/mysql/mysql.sock' (2)
И никакого файла mysql.sock не было.
Это решение решило мою проблему, и MySQL снова заработал:
Войдите в систему как root:
sudo su -
Бегать:
systemctl stop mysqld.service
systemctl start mysqld.service
systemctl enable mysqld.service
Тестировать как root:
mysql -u root -p
MySQL теперь должен быть запущен.
Я надеюсь, что это может помочь кому-то еще.
Обратите внимание, что хотя mysql считывает информацию о местонахождении файла сокета из файла my.cnf, программа mysql_secure_installation, похоже, иногда делает это неправильно.
Так что, если вы похожи на меня и перемешиваете вещи во время установки, вы можете оказаться в ситуации, когда вы можете просто подключиться к базе данных с помощью mysql, но это невозможно защитить (не используя этот скрипт в любом случае).
Чтобы исправить это, предложение от sreddy работает хорошо: создайте мягкую ссылку, откуда скрипт будет ожидать сокета, где он на самом деле находится. Пример:
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 ~ $
Это может быть глупым предложением, но убедитесь, что ваша БД все еще размещена на локальном хосте. Например, если сетевой администратор выбрал (или изменил) хостинг Amazon DB, вам потребуется это имя хоста!
В моем случае я импортировал новую базу данных, и после этого я не смог подключиться снова. Наконец я понял, что это проблема космоса.
Таким образом, вы можете удалить последнюю базу данных и расширить свой жесткий диск или, что я сделал, восстановил снимок моей виртуальной машины.
На всякий случай, если кто-то считает, что это полезно
Это проблема, если у вас заканчивается свободное место на диске. Решение - освободить место на жестком диске.
Пожалуйста, прочитайте больше, чтобы получить объяснение:
Если вы используете MySQL в LINUX, проверьте свободное место на жестком диске с помощью команды 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.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 в папке).
Это вызвано нехваткой места на диске.
Я надеюсь, что я помогу некоторым людям !!!! Спасибо!
Попробуйте первые 2, 3 решения. Ошибка все еще всплывающее окно & Если вы не можете найти/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
Измените {LETTER} и {GROUP ID}, как показано в вашей базе данных MySQL профиля администратора проекта.