it-swarm.com.ru

ошибка: «Не удается подключиться к локальному серверу 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 снова. Но я заметил, что он не запрашивает у меня пароль. Разве он не должен спрашивать пароль администратора?

262
dot

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

Sudo find / -type s

В моей системе Mysql-сервера сокет был открыт по адресу /var/lib/mysql/mysql.sock

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

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

Иногда сценарий запуска системы, запускающий исполняемый файл командной строки, указывает флаг --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.

159
Ray

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

Sudo service mysql start
199
Joe Cheng

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

ps -A|grep mysql

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

Sudo pkill mysql

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

ps -A|grep mysqld

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

Sudo pkill mysqld

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

service mysql restart
mysql -u root -p

Иметь очень хорошо работающий MySQL снова

97
Hammad Raza

Решение намного проще. 

  1. Во-первых, вы должны найти (в Терминале с «Sudo find/-type s»), где находится ваш файл mysql.sock. В моем случае это было в /opt/lampp/var/mysql/mysql.sock 
  2. Запустите Терминал и введите Sudo Nautilus
    Это запускает ваш файловый менеджер с привилегиями суперпользователя 
  3. От Наутилуса перейдите туда, где находится ваш файл mysql.sock 
  4. Щелкните правой кнопкой мыши по файлу и выберите Сделать ссылку
  5. Переименуйте файл ссылки в mysqld.sock, затем щелкните правой кнопкой мыши на файле и Cut его
  6. Перейдите к /var/run и создайте папку с именем mysqld и введите ее
  7. Теперь щелкните правой кнопкой мыши и Вставьте файл ссылки
  8. Вуаля! Теперь у вас будет файл mysqld.sock в /var/run/mysqld/mysqld.sock :)
35
Ioan Stef

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

Для Ubuntu:

Sudo service mysql start;

Для CentOS или RHEL:

Sudo service mysqld start;
22
Pratik Patil

Хорошо, просто скопируйте и вставьте эти коды: это должно быть сделано в терминале, на сервере, когда ваша база данных mysql не установлена ​​должным образом, и когда вы получаете эту ошибку: «Не удается подключиться к локальному серверу MySQL через сокет»/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
11
coolcool1994

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

mkdir /var/run/mysqld/
chown mysqld /var/run/mysqld/
10
motorbaby

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

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

9
Taimoor Changaiz

Есть много причин для этой проблемы, но иногда просто перезапустите сервер MySQL, это решит проблему. 

Sudo service mysql restart
7
Leopathu

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

решения

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

  • Sudo apt-get удалить MySQL-сервер
  • Sudo apt-get удалить mysql-клиент
  • Sudo apt-get удалить mysql-common
  • Sudo apt-get удалить phpmyadmin

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

  • Sudo apt-get установить 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 и т.д.)

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

  • USE rahul_db (имя базы данных);

Спасибо.**

5
Buddheshwar Ojhar

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

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

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

  1. Создайте папку с именем mysqld inside/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. Запустите сервер, если он еще не запущен, и попробуйте снова запустить вашу программу.

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

3
Robert Odoch

Может быть, кто-то сталкивается с этой проблемой. Я использую Mysql Workbench on 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
3
Bilal

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

перезапуск службы mysql

3
Jack BeNimble

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

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

3
karan

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

3
spencer

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

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

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

Sudo apt-get remove mysql-client
Sudo apt-get install mysql-server
2
Dew

Я удалил mysql в Ubuntu 16.04 https://askubuntu.com/questions/172514/how-do-i-uninstall-mysql

Я переустановил mysql https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-16-04

Казалось, это работает.

2
Pranay Aryal

В моем случае два процесса mysqld были запущены .. Убил необязательный процесс с помощью Pkill -9 mysqld

2
amindri

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

open-files-limit = 2048

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

2
knb

Я запускаю MySQL на виртуальной машине в Ubuntu, так что случилось, когда я перезапустил свой хост и виртуальную машину, 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

Если у вас та же проблема, что и у меня, вы можете идти!

1
Aman Chawla

Изменение 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
1
Dulith De Costa

У меня была похожая проблема на 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 before.

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

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

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

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

6) Восстановить все бд в 3).

Удачи!

1
Heitor

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

#services mysql start

или же

#/etc/init.d/mysql start
1
Susampath

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

innodb_buffer_pool_size = 4096M

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

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

1
Greg

Иногда вам просто не хватает места на сервере, просто освободите место (например, очистите файлы журнала) и запустите mysql:

/etc/init.d/mysql start

0
Prashant

Я использую XAMPP в Ubuntu. Я обнаружил эту ошибку при подключении базы данных через терминал. Я решаю это без какой-либо конфигурации, потому что путь к файлу сокета по умолчанию в XAMPP записан в "/opt/lampp/etc/my.cnf" следующим образом:

[client]
#password   = your_password
port        = 3306
socket      = /opt/lampp/var/mysql/mysql.sock

теперь вы можете подключиться, просто задав этот параметр сокета с помощью команды mysql на терминале, например:

mysql -u root --socket /opt/lampp/var/mysql/mysql.sock

и это сделано без какой-либо конфигурации.

Если вы не хотите каждый раз вводить путь к сокету, то измените путь по умолчанию в my.cnf на «/var/run/mysqld/mysqld.sock». Предоставьте разрешения и перезапустите сервер MySQL.

0
Ani

Сначала создайте dir/var/run/mysqld

с командой:

mkdir -p /var/run/mysqld

тогда добавь права в каталог

chown mysql:mysql /var/run/mysqld

после этой попытки

mysql -u root
0
Ingo

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

nano /etc/mysql/my.cnf

поиск связать адреса и удалить конкретный с IP-узла (не 127.0.0.1)

0
barresoft

У меня была такая проблема, когда я изменял размер капли на digitalocean. Я обновил версию MySQL и работает на меня. Вот учебник, который я применил - https://serverpilot.io/community/articles/how-to-upgrade-mysql-5.5-to-5.6-on-ubuntu-14.04.html

0
Sam

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

Sudo mysql

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

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

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

0
JohanTux

У меня была точно такая же проблема. Поработав в течение часа, я нашел способ исправить это без переустановки mysql-common, mysql-client, mysql-server.

Прежде всего, перейдите в "/ var/run/mysqld". Вы обнаружите, что mysql.sock не существует. Просто удалите весь каталог mysqld, создайте его заново и предоставьте ему необходимые привилегии.

# rm -rf /var/run/mysqld && mkdir /var/run/mysqld && chown mysql /var/run/mysqld/

Теперь убейте процесс mysql целиком. Вполне возможно, что он покажет вам, "ожидая очистки страницы" при запуске команды "/etc/init.d/mysql status", даже после закрытия службы.

Чтобы полностью закрыть сервис, используйте

# pkill -9 mysqld

После завершения процесса попробуйте запустить его снова, используя

# /etc/init.d/mysql start

И вы увидите, что это работает хорошо! И также не будет никакой проблемы в том, чтобы остановить это также.

0
xscorp7

Файл mysql.sock создается при запуске MariaDB и удаляется при выключении MariaDB. Он не будет существовать, если MariaDB не запущен . Возможно, вы не установили MariaDB . ВЫ МОЖЕТЕ СЛЕДОВАТЬ ИНСТРУКЦИИ НИЖЕ: https://www.linode.com/docs/databases/mariadb/how-to-install-mariadb-on-centos-7 BEST

0
jsina

Я перепробовал почти все перечисленные решения, ни одно из них не работало до тех пор, пока я не перезапустил компьютер, а затем сервер MySQL перезапустился, когда я выполнил команду «Перезапуск службы MySQL». 

0
SyCode

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

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

mysqld.service не найден

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

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

0
Arch Linux Tux