ошибка: "Не удается подключиться к локальному серверу MySQL через сокет"/var/run/mysqld/mysqld.sock '(2)' - отсутствует /var/run/mysqld/mysqld.sock

Моя проблема началась с того, что я не смог войти в систему как root больше при моей установке mysql. Я пытался запустить mysql без включенных паролей... но всякий раз, когда я запускал команду

# mysqld_safe --skip-grant-tables &

Я никогда не получу подсказку обратно. Я пытался следовать этим инструкциям, чтобы восстановить пароль.

Экран просто выглядит так:

[email protected]:/usr/bin# mysqld_safe --skip-grant-tables
120816 11:40:53 mysqld_safe Logging to syslog.
120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

и я не получаю приглашение начать вводить команды SQL для сброса пароля.

Когда я убиваю его, нажимая CTRL + C, я получаю следующее сообщение:

error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'

Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!

Если я повторю команду и оставлю ее достаточно долго, я получу следующую серию сообщений:

[email protected]:/run/mysqld# 120816 13:15:02 mysqld_safe Logging to syslog.
120816 13:15:02 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120816 13:16:42 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

[1]+  Done                    mysqld_safe --skip-grant-tables
[email protected]:/run/mysqld#

Но тогда, если я попытаюсь войти в систему как root, выполнив:

# mysql -u root

Я получаю следующее сообщение об ошибке:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

Я проверил и /var/run/mysqld/mysqld.sock файл не существует. Папка делает, но не файл.

Кроме того, я не знаю, помогает ли это или нет, но я запустил find / -name mysqld и он придумал:

/var/run/mysqld - folder
/usr/sbin/mysqld - file
/run/mysqld - folder

Я новичок в Linux и MySQL, поэтому я не знаю, нормально это или нет. Но я включаю эту информацию на случай, если она поможет.

Я наконец решил удалить и переустановить MySQL.

apt-get remove mysql-server
apt-get remove mysql-client
apt-get remove mysql-common
apt-get remove phpmyadmin

После переустановки всех пакетов в том же порядке, что и выше, во время установки phpmyadmin я получил ту же ошибку:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

Поэтому я попытался снова удалить/переустановить. На этот раз после удаления пакетов я также вручную переименовал все файлы и каталоги mysql в mysql.bad в соответствующих местах.

/var/lib/mysql 
/var/lib/mysql/mysql
/var/log/mysql
/usr/lib/perl5/DBD/mysql
/usr/lib/perl5/auto/DBD/mysql
/usr/lib/mysql
/usr/bin/mysql
/usr/share/mysql
/usr/share/dbconfig-common/internal/mysql
/etc/init.d/mysql
/etc/apparmor.d/abstractions/mysql
/etc/mysql

Затем я попытался переустановить mysql-server и mysql-client снова. Но я заметил, что это не запрашивает у меня пароль. Разве он не должен спрашивать пароль администратора?

Ответ 1

Чтобы найти все файлы сокетов в вашей системе:

sudo find / -type s

Моя серверная система Mysql открывала сокет в /var/lib/mysql/mysql.sock

Как только вы обнаружите, где сокет открывается, добавьте или отредактируйте строку в файле /etc/my.cnf с помощью пути к файлу сокета:

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

Иногда запуск системы script, запускающий исполняемый файл командной строки, указывает флаг --socket=path. Этот флаг может переопределить местоположение my.cnf, и это приведет к тому, что сокет не будет найден, где файл my.cnf указывает, что он должен быть. Затем, когда вы пытаетесь запустить клиент командной строки mysql, он будет читать my.cnf, чтобы найти сокет, но он не найдет его, поскольку он отклоняется от того, где его создал сервер. Итак, если вы не заботитесь о том, где находится сокет, нужно просто изменить my.cnf для соответствия.

Затем остановите процесс mysqld. Как вы это сделаете, зависит от системы.

Если вы являетесь суперпользователем в системе Linux, попробуйте выполнить одно из следующих действий, если вы не знаете конкретного метода, который использует ваша установка Mysql:

  • service mysqld stop
  • /etc/init.d/mysqld stop
  • mysqladmin -u root -p shutdown
  • Некоторые системы не настроены так, чтобы иметь элегантный способ остановить mysql (или по какой-то причине mysql не отвечает), и вы можете принудительно завершить mysql:
    • Один шаг: pkill -9 mysqld
    • Два шага (наименее предпочтительные):
      • Найти идентификатор процесса mysql с помощью pgrep mysql или ps aux | grep mysql | grep -v grep
      • Предполагая, что идентификатор процесса 4969 завершен с помощью kill -9 4969

После этого вы можете искать pid файл в /var/run/mysqld/ и удалять его

Убедитесь, что разрешения на ваш сокет таковы, что любой пользовательский mysqld работает, как может читать/писать на него. Легкий тест заключается в том, чтобы открыть его до полного чтения/записи и посмотреть, все ли работает:

chmod 777 /var/run/mysqld/mysqld.sock

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

Кроме того, каталог, в котором находится сокет, должен быть доступен пользователю, выполняющему процесс mysqld.

Ответ 2

Попробуйте эту команду,

sudo service mysql start

Ответ 3

Эта ошибка возникает из-за множества установок mysql. Выполните команду:

ps -A|grep mysql

Убейте процесс, используя:

sudo pkill mysql

а затем выполните команду:

ps -A|grep mysqld

Также убейте этот процесс, выполнив:

sudo pkill mysqld

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

service mysql restart
mysql -u root -p

У вас очень хорошо работает mysql снова

Ответ 4

Решение проще.

  • Сначала вам нужно найти (в терминале с "sudo find/-type s" ), где находится ваш файл mysql.sock. В моем случае это было в /opt/lampp/var/mysql/mysql.sock
  • Запуск терминала и выпуск sudo Nautilus
    Это запустит ваш менеджер файлов с привилегиями суперпользователя.
  • От Nautilus перейдите туда, где находится ваш mysql.sock файл
  • Щелкните правой кнопкой мыши файл и выберите "Сделать ссылку"
  • Переименуйте файл ссылки в mysqld.sock, затем щелкните правой кнопкой мыши на файле и вырежьте его
  • Перейдите в /var/run и создайте папку с именем mysqld и введите
  • Теперь щелкните правой кнопкой мыши и вставьте файл ссылки.
  • Voila! Теперь у вас будет mysqld.sock файл /var/run/mysqld/mysqld.sock:)

Ответ 5

Просто нужно запустить MySQL-сервис после установки:

Для Ubuntu:

sudo service mysql start;

Для CentOS или RHEL:

sudo service mysqld start;

Ответ 6

Хорошо скопируйте и вставьте эти коды: это должно быть сделано в терминале, внутри сервера, когда ваша база данных mysql установлена ​​неправильно, и когда вы получаете эту ошибку: "Не удается подключиться к локальному серверу MySQL через socket '/var/run/mysqld/mysqld.sock' (2) '.

Остановить MySql

sudo /etc/init.d/mysqld stop

Перезапустить или запустить его

sudo /etc/init.d/mysqld restart or sudo /etc/init.d/mysqld start

Сделайте ссылку, подобную этой, и отдайте ее системе

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

Запустите безопасную установку, которая поможет вам выполнить весь процесс, необходимый для настройки mysql

/usr/bin/mysql_secure_installation

Ответ 7

Я столкнулся с такой же ошибкой и обнаружил, что это связано с обновлением пакетов, поэтому после перезагрузки моей системы я разрешил ошибку.

Я думаю, из-за того, что библиотеки sql-библиотек/пакетов обновляют эту ошибку, поэтому попробуйте это, если вы выполняете некоторую модернизацию:)

Ответ 8

В Ubuntu есть ошибка с MySQL 5.6 и 5.7, где var/run/mysqld/ исчезает всякий раз, когда служба MySQL останавливается или перезагружается. Это предотвращает запуск MySQL. Обнаружено это обходное решение, которое не является совершенным, но, по крайней мере, оно запускается после остановки/перезагрузки:

mkdir /var/run/mysqld/
chown mysqld /var/run/mysqld/

Ответ 9

Существует много причин для этой проблемы, но иногда просто перезагружается сервер mysql, он исправляет проблему.

sudo service mysql restart

Ответ 10

Ответ на шаг загрузки пользователя сработал у меня. Иногда нужно отредактировать файл в /etc/mysql/my.cnf добавить строку клиенту

[client]
password = your_mysql_root_password
port  = 3306
host  = 127.0.0.1
socket  = /var/lib/mysql/mysql.sock

Ответ 11

* Ошибка: "Не удается подключиться к локальному серверу MySQL через сокет" /var/run/mysqld/mysqld.sock '(2)'

<сильные > решения

наконец, удалите и переустановите mysql. **

  • sudo apt-get удалить mysql-сервер
  • sudo apt-get удалить mysql-client
  • sudo apt-get удалить mysql-common
  • sudo apt-get удалить phpmyadmin

затем снова установите

  • sudo apt-get install mysql-server-5.6

После этой операции будет использовано 164 МБ дополнительного дискового пространства.

  • Вы хотите продолжить? [Y/n] Y нажмите YES для полной установки.

...... .......

  • Наконец, вы получите эти строки....

    Настройка libhtml-template-perl (2.95-1)...

    Настройка mysql-common-5.6 (5.6.16-1 ~ exp1)... Обработка триггеров для libc-bin (2.19-0ubuntu6) Триггеры обработки для ureadahead (0.100.0-16)...

  • И затем

    root @ubuntu1404: ~ # mysql -u root -p (для каждого пароля сначала u следует использовать)

  • Введите пароль:

  • Примечание. Введенный пароль должен быть таким же, как время установки пароль mysql (например,.root, system, admin, rahul и т.д.)

    Затем введите

  • ИСПОЛЬЗОВАТЬ rahul_db (имя базы данных);

Спасибо. **

Ответ 12

Использование XAMPP в Ubuntu:

  1. Создайте папку с именем mysqld в каталоге /var/run. Это можно сделать с помощью команды sudo mkdir/var/run/mysqld.

  2. Создайте символическую ссылку на файл mysql.sock, который создается сервером XAMPP при его запуске. Вы можете использовать команду sudo ln -s/opt/lampp/var/mysql/mysql.sock/var/run/mysqld/mysqld.sock.

Примечание. Файл mysql.sock создается при запуске сервера и удаляется при остановке сервера, поэтому иногда созданная вами ссылка может быть повреждена, но она должна работать, если вы запустили сервер с помощью sudo/opt/lampp/lampp start или любым другим способом.

  1. Запустите сервер, если он еще не запущен, и попробуйте снова запустить вашу программу.

Удачи! Надеюсь, на этот раз тебе это сойдет с рук.

Ответ 13

вы можете найти mysqld.sock в /var/run/mysqld, если вы уже установили mysql-server sudo apt-get install mysql-server

Ответ 14

Может быть, кто-то столкнулся с этой проблемой. Я использую Mysql Workbench на Ubuntu 14 и получил эту ошибку.

mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when trying to connect

Найдите файл сокета, запустив sudo find / -type s, в моем случае это было /run/mysqld/mysqld.sock

Итак, я только что создал ссылку на этот файл в каталоге tmp.

sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock

Ответ 15

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

в /etc/my.cnf добавьте следующие строки:

[client]
socket=/var/lib/mysql/mysql.sock <= this path should be also same as is[mysqld]

И перезапустите службу с помощью: service mysql restart

это сработало для меня

Ответ 16

Это уже упоминалось пару раз, но это сразу же помогло мне:

служба mysql restart

Ответ 17

В моем случае выполнялись два процесса mysqld. убил необязательные процессы, используя pkill -9 mysqld

Ответ 18

Если в вашей системе имеется множество баз данных и таблиц, и если у вас есть innodb_file_per_table, установленный в my.cnf, то на вашем сервере mysql могут быть запущены открытые объекты/файлы (или, скорее, дескрипторы для этих объектов ) Задайте новое максимальное число с помощью

open-files-limit = 2048

и перезапустите mysql. Этот подход может помочь, когда сокет не создается вообще, но на самом деле это может быть не проблема, существует основная проблема.

Ответ 19

У меня была эта проблема только на Ubuntu 14.10

Поверяет, что mysql-server больше не установлен (каким-то образом он был удален), но я не мог просто установить его, потому что были некоторые сломанные пакеты и проблемы/конфликты.

В конце концов мне пришлось переустановить mysql

sudo apt-get remove mysql-client
sudo apt-get install mysql-server

Ответ 21

Я думаю, что ваш сервер MySQL еще не запущен. Запустите сервер, используя одну из следующих команд.

#services mysql start

или же

#/etc/init.d/mysql start

Ответ 22

Для меня работала host до 127.0.0.1.

Отредактируйте файл в /etc/mysql/my.cnf и добавьте указанную ниже строку в раздел: client

[client]
port  = 3306
host  = 127.0.0.1
socket  = /var/lib/mysql/mysql.sock

После этого вы закончите. Выполните следующую команду.

sudo service mysql start

Ответ 23

Я запускаю свой MySQL на виртуальной машине в Ubuntu. Так что случилось, когда я перезапустил мой хост и VM, IP изменился. Я настроил mysql для запуска на IP 192.168.0.5 и теперь из-за динамического распределения IP, мой новый IP был 192.168.0.8

Если у вас есть такая же проблема, просто проверьте свой ip с помощью команды ifconfig.

Проверьте привязку MySQL с помощью команды cat /etc/mysql/my.cnf | grep bind-address

Если оба IP являются одинаковыми, переустановите сервер mysql

Если нет, то измените свой IP-адрес на /etc/network/interfaces с помощью nano, vi, vim или чего-либо из ваших предпочтений.

Я предпочитаю sudo nano /etc/network/interfaces

и введите следующие

auto eth0
iface eth0 inet static
address 192.168.0.5
netmask 255.255.255.0

Сохраните файл интерфейсов, перезагрузите интерфейс sudo ifdown eth0 && & sudo ifup eth0 замените "eth0" на сетевой интерфейс

Перезагрузите MySQL sudo service mysql stop, а затем sudo service mysql start

Если у вас есть такая же проблема, как у меня, вам хорошо идти!

Ответ 24

Я бы также проверить конфигурацию mysql. Я столкнулся с этой проблемой с моим собственным сервером, но я был слишком поспешным и неправильно сконфигурировал innodb_buffer_pool_size для моей машины.

innodb_buffer_pool_size = 4096M

Обычно он работает нормально до 2048, но, я думаю, у меня нет памяти, необходимой для поддержки 4 концертов.

Я предполагаю, что это также может произойти с другими настройками конфигурации mysql.

Ответ 25

У меня была аналогичная проблема на CentOS VPS. Если MySQL не запускается или продолжает сбой сразу после его запуска, выполните следующие действия:

1) Найдите файл my.cnf(мой был расположен в /etc/my.cnf) и добавьте строку:

innodb_force_recovery = X

заменив X числом от 1 до 6, начиная с 1, а затем увеличивая, если MySQL не запустится. Установка на 4, 5 или 6 может удалить ваши данные, поэтому будьте внимательны и прочитайте http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html раньше.

2) Перезапустите службу MySQL. Выполняется только SELECT, и это нормально в данный момент.

3) Дамп всех ваших баз данных/схем с помощью mysqldump один за другим, не сжимайте дампы, потому что в любом случае вам придется распаковать их позже.

4) Переместите (или удалите!) только каталоги bd внутри /var/lib/mysql, сохранив отдельные файлы в корне.

5) Остановите MySQL, а затем раскомментируйте строку, добавленную в 1). Запустите MySQL.

6) Восстановите все bd, сброшенные в 3).

Удачи!

Ответ 26

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

sudo mysql

Как только это позволит вам, вы можете создать нового пользователя и предоставить необходимые вам привилегии для конкретной базы данных, к которой им нужен доступ.

Mysql 5.7 изменил некоторые вещи и по умолчанию использует плагин auth_socket (в отличие от mysql_native_password) для root, чтобы защитить аккаунт от взлома. Вы можете переопределить это, установив поле плагина для root, но если у вас нет веских причин, вы, вероятно, не должны обходить защиту. Особенно, когда sudo mysql проще, чем mysql -u root -p.

Я узнал эту информацию - из всех мест - с сайта помощи Raspberry Pi. Сработал как шарм после того, как Lubuntu 18.04 выбил меня из колеи на пару часов.

Ответ 27

на archlinux Я столкнулся с этой ошибкой, и проблема заключалась в том, что служба mysqld не выполнялась.

Однако я не смог включить mysql-сервис с systemctl start mysqld, как указано в документации Archlinux. Я думаю, что ошибка была что-то вроде

mysqld.service не найден

Сначала мне нужно было перезапустить систему.

Затем я снова ввел команду (и ввел systemctl enable mysqld), и теперь mysql смог найти созданный mysql.sock.

Ответ 29

Я попробовал почти все перечисленные решения, никто не работал у меня, пока я не перезапустил машину, а затем перезапустил сервер mysql, когда я выпустил команду "service mysql restart".

Ответ 30

В моем случае проблема заключалась в адресах привязки в /etc/mysql/my.cnf, а затем:

nano/etc/mysql/my.cnf

найдите адреса привязки и удалите их с помощью хоста ip (а не 127.0.0.1)