ошибка: "Не удается подключиться к локальному серверу 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:
-
Создайте папку с именем mysqld в каталоге /var/run. Это можно сделать с помощью команды sudo mkdir/var/run/mysqld
.
-
Создайте символическую ссылку на файл mysql.sock, который создается сервером XAMPP при его запуске. Вы можете использовать команду sudo ln -s/opt/lampp/var/mysql/mysql.sock/var/run/mysqld/mysqld.sock
.
Примечание. Файл mysql.sock создается при запуске сервера и удаляется при остановке сервера, поэтому иногда созданная вами ссылка может быть повреждена, но она должна работать, если вы запустили сервер с помощью sudo/opt/lampp/lampp start
или любым другим способом.
- Запустите сервер, если он еще не запущен, и попробуйте снова запустить вашу программу.
Удачи! Надеюсь, на этот раз тебе это сойдет с рук.
Ответ 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
Ответ 20
Я удалил 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
Казалось, это сработало.
Ответ 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
.
Ответ 28
У меня была такая проблема, когда я изменял размер капли на digitalocean. Я обновил версию mysql и работал у меня. Вот учебник, который я применил - https://serverpilot.io/community/articles/how-to-upgrade-mysql-5.5-to-5.6-on-ubuntu-14.04.html
Ответ 29
Я попробовал почти все перечисленные решения, никто не работал у меня, пока я не перезапустил машину, а затем перезапустил сервер mysql, когда я выпустил команду "service mysql restart".
Ответ 30
В моем случае проблема заключалась в адресах привязки в /etc/mysql/my.cnf, а затем:
nano/etc/mysql/my.cnf
найдите адреса привязки и удалите их с помощью хоста ip (а не 127.0.0.1)