Я получаю следующую ошибку, когда пытаюсь подключиться к 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" , если разъем сокета не включен/работает.
Убедитесь, что ваша служба mysql запущена
service mysqld start
Затем попробуйте выполнить одно из следующих действий:
(если вы не задали пароль для mysql)
mysql -u root
если вы уже установили пароль
mysql -u root -p
Если ваш файл 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/
.
Если вы найдете тот же файл в другом месте, а затем symlink его:
Для примера: у меня это в /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
до /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.
Если вы находитесь в недавнем 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
Проверьте, запущена ли ваша служба 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 база данных паролей -h host;
Убедитесь, что у вас осталось достаточно места в /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
Это поможет вам сократить использование диска.
Вот что сработало для меня:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysqld restart
MariaDB, разработанная сообществом разработчиков 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.service был неудачным
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 через сокет '/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 теперь должен быть запущен и запущен.
Я надеюсь, что это тоже поможет кому-то другому.
Обратите внимание, что в то время как mysql считывает информацию о местоположении файла сокета из файла my.cnf, программа mysql_secure_installation, похоже, не делает это правильно время от времени.
Итак, если вы похожи на меня и перетасовываете вещи во время установки, вы можете попасть в ситуацию, когда вы можете подключиться к базе данных с помощью mysql просто отлично, но вещь не может быть защищена (не используя этот script в любом случае).
Чтобы исправить это, предложение от sreddy работает хорошо: сделайте softlink, откуда script ожидает, что сокет будет там, где он есть на самом деле. Пример:
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
(я использую/tmp/в качестве местоположения по умолчанию для сокетов)
Один из способов воспроизвести эту ошибку: если вы хотите подключиться к иностранному серверу, но вместо этого подключитесь к несуществующей локальной:
[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] ~ $
Это может быть глупое предложение, но на 100% убедитесь, что ваша БД все еще размещена на локальном хосте. Например, если администратор сети выбрал (или изменил) хостинг Amazon DB, вам понадобится это имя хоста!
столкнулся с этой проблемой при попытке подключиться к mysql в SSH-клиенте, нашел добавление пути сокета к команде, полезной при переключении между сокетами.
> mysql -u user -p --socket=/path/to/mysql5143.sock
Он работал у меня со следующими изменениями
Какой бы путь для сокета не упоминался в [mysqld] и тот же в [client] в my.cnf и перезагружать mysql
[туздЫ] socket =/var/lib/mysql/mysql.sock
[клиент] сокет =/вар/Library/MySQL/mysql.sock
Это проблема, если у вас заканчивается дисковое пространство. Решение - освободить место на жестком диске.
Пожалуйста, прочитайте больше, чтобы получить объяснение:
Если вы используете 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 в папке).
Это вызвано нехваткой дискового пространства.
Я надеюсь, что я помогу некоторым людям!!!! Спасибо!
Мне пришлось отключить explicit_defaults_for_timestamp
из my.cnf.
Попробуйте сначала 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 для профиля проекта.
В моем случае я импортировал новую базу данных, и после этого я не смог подключиться снова. Наконец я понял, что это проблема космоса.
Таким образом, вы можете удалить последнюю базу данных и расширить свой жесткий диск или, что я сделал, восстановил снимок моей виртуальной машины.
На всякий случай, если кто-то считает, что это полезно