Вы подключаетесь к "localhost" или "127.0.0.1"? Я заметил, что при подключении к «localhost» используется разъем сокета, но при подключении к «127.0.0.1» используется разъем TCP / IP. Вы можете попробовать использовать «127.0.0.1», если разъем сокета не включен / не работает.
В этом случае вам, вероятно, следует проверить, действительно ли работает ваш сервер MYSQL.
Ян Тома
3
Вы также можете принудительно использовать сокет с параметром сокета (-S с / usr / bin / mysql) и принудительно использовать TCP / IP, указав порт (-P с / usr / bin / mysql.)
Kaoru
Использование полного сетевого имени, отличного от localhost, помогло мне. Просто убедитесь, что он объявлен в файле hosts на стороне клиента.
Фабьен Хаддади,
2
Примечание для пользователей cygwin: если клиент cygwin mysql пытается подключиться, например, к локальному серверу WAMP mysql, используйте -h <имя хоста, отличное от localhost>. Не пытайтесь создать файл mysql.sock и объявить его в любом файле my.cnf, он не будет работать.
Фабьен Хаддади,
Неправильное имя хоста дало мне точно такую же ошибку. Глядя на /etc/hostsфайл в моем док-контейнере, я увидел имя хоста MySql mysql. Использование этого же имени хоста в моей конфигурации подключения решило проблему.
Стефан
188
Убедитесь, что ваш сервис MySQL работает
service mysqld start
Затем попробуйте выполнить одно из следующих действий:
переименование mysql.sock во что-то другое, затем перезапуск mysqld («перезапуск службы mysqld»), затем переименование чего-то другого обратно в mysql.sock работало для меня. Небольшой разброс в этом ответе, так что спасибо.
К вашему сведению, это работает и для CentOS 8.1. После установки mariadb-serverи mariadbне забудьте запустить, mysql_secure_installationчтобы очистить некоторые небезопасные настройки по умолчанию.
Дио Фунг
13
В моем случае я переместил файл сокета в другое место внутри /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.
Единственно правильный ответ. Интересно, почему не хватает голосов.
CentAu
11
Проверьте, работает ли ваша служба mysqld или нет, если не запущена, запустите службу.
Если ваша проблема не решена, найдите /etc/my.cnfи измените ее следующим образом, где вы увидите строку, начинающуюся с socket. Сделайте резервную копию этого файла, прежде чем делать это обновление.
Привет Sekar, я ввел "find / -name my.cnf", и я получил два местоположения. 1) /opt/lampp/etc/my.cnf 2) /etc/mysql/my.cnf. Итак, какой из них использовать .. Я задал вопрос здесь .. stackoverflow.com/questions/32437796/…
Nana Partykar
7
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)
Спасибо, я запускаю mysql на oracle virtualbox, и когда я сделал дамп своего bd, у меня не хватило места и я не смог запустить сервер mysql, когда я удалил файл дампа, я смог перезапустить сервер mysql.
JayCee
1
Это решило это для меня. Я установил для innodb_buffer_pool_size очень высокое значение для производственных сред, и это вызвало сбой mysql на моей виртуальной машине.
Бенджамин Бриззи
1
Я имел эту проблему при использовании phabricator и решение должно было измениться innodb_buffer_pool_sizeв my.cnf. Установка небольшого значения, как innodb_buffer_pool_size = 50Mэто хороший тест, чтобы отбросить эту гипотезу;)
Еркаламарино
Это была проблема, проверил все, кроме дискового пространства. Освободив пространство от / var, он вернулся!
Наджиб Мами,
5
Вот что сработало для меня:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysqld restart
если вы измените файлы в / var / lib / mysql [например, скопируйте или замените их], вы должны установить для владельца файлов значение mysql, это так важно, если перезапуск mariadb.service не удался
что ты хочешь сказать? Пожалуйста, прочитайте часто задаваемые вопросы, прежде чем задавать вопрос здесь
Freak
На этот вопрос успешно ответили три года назад. Этот точный ответ был дан более полно в прошлом году.
Кэрнарвон,
2
Пожалуйста, убедитесь, что вы правильно установили сервер MySQL, я встречался с этой ошибкой много раз, и я думаю, что отладку из сокета сложно, я имею в виду, что может быть проще переустановить его.
Если вы используете CentOS 7, вот правильный способ его установки:
Прежде всего, добавьте источник сообщества mysql yum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
Затем вы можете установить его по yum install mysql-community-server
Обратите внимание, что хотя 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 endwith;or\g.
Your MySQL connection id is235
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 |+-------------------------+3rowsinset(0.00 sec)
mysql>exit
Bye
eric@dev ~$
Это может быть глупым предложением, но убедитесь, что ваша БД все еще размещена на локальном хосте. Например, если сетевой администратор выбрал (или изменил) хостинг Amazon DB, вам потребуется это имя хоста!
Я использую хостинг-провайдера 1and1 и получил эту ошибку после ssh-на хосте. Исправление заключалось в том, чтобы просто указать имя хоста «mysql -u dbo70123521 -p --host db70313321.db.1and1.com db703133520»
rob
1
В моем случае я импортировал новую базу данных, и после этого я не смог подключиться снова. Наконец я понял, что это проблема космоса.
Таким образом, вы можете удалить последнюю базу данных и расширить свой жесткий диск или, что я сделал, восстановил снимок моей виртуальной машины.
На всякий случай, если кто-то считает, что это полезно
столкнулся с этой проблемой при попытке подключения mysql в SSH-клиенте и обнаружил, что добавление пути к сокету к команде полезно, когда необходимо переключение между сокетами.
> mysql -u user-p --socket=/path/to/mysql5143.sock
Это проблема, если у вас заканчивается свободное место на диске. Решение - освободить место на жестком диске.
Пожалуйста, прочитайте больше, чтобы получить объяснение:
Если вы используете MySQL в LINUX, проверьте свободное место на жестком диске с помощью команды disk free:
df
если вы получаете что-то подобное:
Filesystem 1K-blocks Used Available Use% Mounted on/dev/sda2 516282849022600100%/
udev 156676841565921%/dev
/dev/sda3 31071247084428784443%/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 в папке).
Это вызвано нехваткой места на диске.
Я надеюсь, что я помогу некоторым людям !!!! Спасибо!
Ответы:
Вы подключаетесь к "localhost" или "127.0.0.1"? Я заметил, что при подключении к «localhost» используется разъем сокета, но при подключении к «127.0.0.1» используется разъем TCP / IP. Вы можете попробовать использовать «127.0.0.1», если разъем сокета не включен / не работает.
источник
/etc/hosts
файл в моем док-контейнере, я увидел имя хоста MySqlmysql
. Использование этого же имени хоста в моей конфигурации подключения решило проблему.Убедитесь, что ваш сервис MySQL работает
Затем попробуйте выполнить одно из следующих действий:
(если вы не установили пароль для mysql)
если вы уже установили пароль
источник
service mariadb start
потому что mariadb.org/debian-9-released-mariadb-mysql-variantЕсли ваш файл my.cnf (обычно в папке etc) правильно настроен с
Вы можете проверить, работает ли mysql с помощью следующей команды:
попробуйте изменить свое разрешение на папку MySQL. Если вы работаете локально, вы можете попробовать:
это решило это для меня
источник
Сервер MySQL не работает, или это не местоположение его файла сокета (проверьте my.cnf).
источник
Скорее всего
mysql.sock
, не существует в/var/lib/mysql/
.Если вы найдете тот же файл в другом месте, используйте символическую ссылку:
Например: у меня есть это в
/data/mysql_datadir/mysql.sock
Переключите пользователя на mysql и выполните, как указано ниже:
Это решило мою проблему
источник
mysql.sock
файлЕсли вы используете недавний RHEL, вам может потребоваться запустить mariadb (mysql db с открытым исходным кодом) вместо mysql db:
После этого вы сможете получить доступ к mysql обычным способом:
источник
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
Работает:
Не работает:
Вы можете решить эту проблему, добавив ту же строку сокета в
[client]
разделе внутри конфигурации mysql.источник
Просто отредактируйте
/etc/my.cnf
Добавить следующие строки вmy.cnf
Перезапустите MySQL и подключитесь снова
источник
Проверьте, работает ли ваша служба mysqld или нет, если не запущена, запустите службу.
Если ваша проблема не решена, найдите
/etc/my.cnf
и измените ее следующим образом, где вы увидите строку, начинающуюся сsocket
. Сделайте резервную копию этого файла, прежде чем делать это обновление.Изменить на
источник
MariaDB, сообщество MySQL, разработанное сообществом, стало реализацией MySQL по умолчанию во многих дистрибутивах.
Итак, сначала вы должны начать,
Если это не удается, попробуйте,
Затем, чтобы начать MySQL,
На сегодняшний день в Fedora пакет называется
mariadb
А в Ubuntu он называетсяmariadb-server
.Поэтому вам, возможно, придется установить его, если он еще не установлен в вашей системе.
источник
Убедитесь, что у вас достаточно места
/var
. Если Mysql demon не может записать дополнительную информацию на диск, сервер mysql не запустится и это приведет к ошибкеCan't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Рассмотреть возможность использования
Это поможет вам снизить использование диска.
источник
innodb_buffer_pool_size
вmy.cnf
. Установка небольшого значения, какinnodb_buffer_pool_size = 50M
это хороший тест, чтобы отбросить эту гипотезу;)Вот что сработало для меня:
источник
Пожалуйста, проверьте, работает ли другой сервис mysql.
источник
Убедитесь, что вы запустили сервер:
Затем соединитесь с пользователем root:
источник
Если ваш 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 не удался
источник
Сначала введите «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:
Бегать:
Тестировать как root:
MySQL теперь должен быть запущен.
Я надеюсь, что это может помочь кому-то еще.
источник
Обратите внимание, что хотя mysql считывает информацию о местонахождении файла сокета из файла my.cnf, программа mysql_secure_installation, похоже, иногда делает это неправильно.
Так что, если вы похожи на меня и перемешиваете вещи во время установки, вы можете оказаться в ситуации, когда вы можете просто подключиться к базе данных с помощью mysql, но это невозможно защитить (не используя этот скрипт в любом случае).
Чтобы исправить это, предложение от sreddy работает хорошо: создайте мягкую ссылку, откуда скрипт будет ожидать сокета, где он на самом деле находится. Пример:
(Я использую / tmp / как местоположение по умолчанию для сокетов)
источник
У меня сработало со следующими изменениями
Какой бы путь для сокета не упоминался в [mysqld] и тот же в [client] в my.cnf и перезапустите mysql
[mysqld] socket = / var / lib / mysql / mysql.sock
[клиент] сокет = / var / lib / mysql / mysql.sock
источник
Один из способов воспроизвести эту ошибку: если вы хотите подключиться к стороннему серверу, а вместо этого подключиться к несуществующему локальному:
Таким образом, вы должны указать хост так:
источник
Это может быть глупым предложением, но убедитесь, что ваша БД все еще размещена на локальном хосте. Например, если сетевой администратор выбрал (или изменил) хостинг Amazon DB, вам потребуется это имя хоста!
источник
В моем случае я импортировал новую базу данных, и после этого я не смог подключиться снова. Наконец я понял, что это проблема космоса.
Таким образом, вы можете удалить последнюю базу данных и расширить свой жесткий диск или, что я сделал, восстановил снимок моей виртуальной машины.
На всякий случай, если кто-то считает, что это полезно
источник
столкнулся с этой проблемой при попытке подключения mysql в SSH-клиенте и обнаружил, что добавление пути к сокету к команде полезно, когда необходимо переключение между сокетами.
источник
Это проблема, если у вас заканчивается свободное место на диске. Решение - освободить место на жестком диске.
Пожалуйста, прочитайте больше, чтобы получить объяснение:
Если вы используете MySQL в LINUX, проверьте свободное место на жестком диске с помощью команды disk free:
если вы получаете что-то подобное:
Тогда это проблема, и теперь у вас есть решение!
Так как mysql.sock хочет быть созданным в папке mysql, которая почти всегда находится в корневой папке, достичь этого не удалось из-за недостатка места.
Если вы периодически даете команду ls в каталоге mysql (в openSUSE 11.1 в / var / lib / mysql) вы получите что-то вроде:
Файл mysql.sock появляется и исчезает часто (вы должны попробовать выделить ls, чтобы поразить экземпляр с файлом mysql.sock в папке).
Это вызвано нехваткой места на диске.
Я надеюсь, что я помогу некоторым людям !!!! Спасибо!
источник
Мне пришлось отключить
explicit_defaults_for_timestamp
из my.cnf.источник
Попробуйте первые 2, 3 решения. Ошибка все еще всплывающее окно & Если вы не можете найти
/var/lib/mysql/mysql.sock
Проверьте доступное пространство в / var /
Если каталог заполнен, удалите некоторые ненужные файлы / каталоги
Вероятно, ваша проблема будет отсортирована сейчас.
источник
Если вы находитесь в оболочке sf.net , попробуйте:
Измените {LETTER} и {GROUP ID}, как показано в вашей базе данных MySQL профиля администратора проекта.
источник