Не удается подключиться к локальному серверу MySQL через socket '/var/lib/mysql / mysql.носок' (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.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
Это поможет вам сохранить на диске вниз.
MariaDB, сообщество, разработанное fork MySQL, стало реализацией MySQL по умолчанию во многих дистрибутивах.
Итак, сначала вы должны начать,
$ sudo systemctl start mariadb
если это не удается, попробуйте,
$ sudo systemctl start mysqld
затем, чтобы запустить mysql,
$ mysql -u root -p
на сегодняшний день, в Fedora пакет называется mariadb
А в Ubuntu это называется mariadb-server
.
поэтому вам, возможно, придется установить его, если он еще не установлен в вашей системе.
убедитесь, что вы запустите сервер:
mysql.server start
затем соединитесь с пользователем root:
mysql -uroot
Если вы меняете файлы в /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
надеюсь, что это помогает !!
пожалуйста, убедитесь, что вы правильно установили сервер MySQL, я встречал эту ошибку много раз, и я думаю, что это сложно отладить из сокета, я имею в виду, что может быть проще переустановить его.
Если вы используете CentOS 7, вот правильный способ установить его:
прежде всего, добавьте источник сообщества mysqlyum 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 надеюсь, что я помогу некоторым людям!!!! Спасибо!
попробуйте первые 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
надеюсь, что это помогает.