ОШИБКА 2002 (HY000): не удается подключиться к локальному серверу MySQL через сокет '/var/run/mysqld/mysqld.sock' (2)

Я установил LAMP на Ubuntu 12.04 LTS (Precise Pangolin), а затем установил пароль root на phpMyAdmin. Я забыл пароль, и теперь я не могу войти. Когда я пытаюсь изменить пароль через терминал, я получаю:

ОШИБКА 2002 (HY000): не удается подключиться к локальному серверу MySQL через сокет '/var/run/mysqld/mysqld.sock' (2)

Как я могу это исправить? Я не могу открыть LAMP, удалить его или переустановить.

93 ответа

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

Эта ошибка означает, что файл /var/run/mysqld/mysqld.sock не существует, если вы не установили mysql-server, тогда файл не будет существовать. Но если mysql-server уже установлен и работает, тогда вам нужно проверить файлы конфигурации.

Конфигурационные файлы:

/etc/my.cnf
/etc/mysql/my.cnf
/var/lib/mysql/my.cnf

В /etc/my.cnfКонфигурация файла сокета может быть /tmp/mysql.sock И в /etc/mysql/my.cnf Конфигурация файла сокета может быть /var/run/mysqld/mysqld.sock, Итак, удалите или переименуйте /etc/mysql/my.cnfПозвольте MySQL использовать /etc/my.cnfТогда проблема может быть решена.

Попробуй это:

mysql -h 127.0.0.1 -P 3306 -u root -p <database>

Также (чтобы увидеть, работает ли он):

telnet 127.0.0.1 3306 

Вероятно, это просто неправильная конфигурация в my.cnf файл, в /etc/somewhere (в зависимости от дистрибутива Linux).

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


Сбросить пароль

Выполните следующие действия (может быть полезно, если вы действительно забыли свой пароль и можете попробовать его в любое время, даже если в данный момент вы не находитесь в ситуации):

  1. Стоп mysql

    sudo /etc/init.d/mysql stop
    

    Или для других версий дистрибутива:

    sudo /etc/init.d/mysqld stop
    
  2. Запустите MySQL в безопасном режиме

    sudo mysqld_safe --skip-grant-tables &
    
  3. Войдите в MySQL, используя root

    mysql -uroot
    
  4. Выберите базу данных MySQL для использования

    use mysql;
    
  5. Сбросить пароль

    update user set password=PASSWORD("mynewpassword") where User='root';
    
  6. Сбросить привилегии

    flush privileges;
    
  7. Перезагрузите сервер

    quit
    
  8. Остановите и снова запустите сервер

    Ubuntu и Debian:

    sudo /etc/init.d/mysql stop
    ...
    sudo /etc/init.d/mysql start
    

    На CentOS, Fedora и RHEL:

    sudo /etc/init.d/mysqld stop
    ...
    sudo /etc/init.d/mysqld start
    
  9. Войти с новым паролем

    mysql -u root -p
    
  10. Введите новый пароль и снова наслаждайтесь вашим сервером, как будто ничего не произошло

Это было взято из Сброс пароля root MySQL.


Обновление взято из комментария @Daniel ниже:

В MySQL 5.7 поле пароля в поле таблицы mysql.user было удалено, и теперь имя поля - "authentication_string", поэтому шаг 5 должен быть:

 update user set authentication_string=password('mynewpassword') where user='root';

В моем случае диск был переполнен и mysqld больше не запускался.

Попробуйте перезапустить службу MySQL.

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

или же

служба MySQL остановка

служба mysql start

Если он не распознает команду "stop", то это определенно место на диске. Вы должны сделать немного места в разделе MySQL или выделить диск больше.

Проверьте место на диске с помощью

дф-ч

Я попробовал следующие шаги:

  1. Войти как super user или использовать sudo
  2. открыто /etc/mysql/my.cnf используя Gedit
  3. найти bind-addressи измените его значение на IP-адрес хост-компьютера сервера базы данных. Для меня это было localhost или же 127.0.0.1
  4. Сохраните и закройте файл.
  5. Вернитесь к терминалу и выполните sudo service mysql start

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

Я исправил эту проблему, выполнив следующую команду:

mysql.server start

И если вы используете Mac и используете brew для установки mysql, просто используйте:

brew services start mysql

У меня была похожая проблема. mysql не запускается:

sudo service mysql start
start: Job failed to start

Если я отключил apparmor:

sudo aa-complain /etc/apparmor.d/*

проблема ушла. Проблема заключалась в том, что mysqld пытался получить доступ к /run/mysqld/mysqld.sock, но профиль apparmor давал разрешение только на /var/run/mysqld/mysqld.sock (/var/run является символической ссылкой на /run, так что на самом деле это тот же самый). Не уверен, почему mysqld не использует путь var, поскольку это то, что установлено во всех файлах конфигурации, но вы можете решить эту проблему, добавив следующее в /etc/apparmor.d/usr.sbin.mysqld

/run/mysqld/mysqld.pid rw,
/run/mysqld/mysqld.sock rw,

Я решил это, убив mysql процесс:

ps -ef | grep mysql
kill [the id]

А потом я снова запустил сервер с:

sudo /etc/init.d/mysql restart

Но start работает так же:

sudo /etc/init.d/mysql start

Тогда я вошел как adminи я был готов.

Каким-то образом процесс сервера MySQL не создал сокет, или клиент ищет сокет в неправильном месте.

Моим первым предложением было бы проверить, работает ли сервер MySQL. Второе предложение может быть, сервер MySQL работает на другом хосте? Если это так, добавьте -h <hostname> Отметьте свой клиент MySQL в терминале.

Если MySQL действительно работает и работает локально, проверьте my.cnf файл. Там должна быть строка, как

socket = /var/run/mysqld/mysqld.sock

Посмотрите, соответствует ли это местоположению сокета, которое вы упомянули в своем посте.

Из опыта я бы сказал, что наиболее вероятным сценарием является то, что ваш сервер MySQL либо вообще не работает, либо не работает на том же хосте, на котором вы запускаете клиент MySQL из терминала.

Я только что столкнулся с той же проблемой после перезапуска моего производственного сервера. Я использую Debian 8.1 (Jessie) на капле DigitalOcean.

Вот что я сделал, чтобы решить мою проблему:

  1. Проверьте, если файл /var/run/mysqld/mysqld.sock существует. Если это не так, создайте его вручную, введя touch /var/run/mysqld/mysqld.sock (что я и должен был сделать).

  2. Таким образом, процесс MySQL может использовать этот файл. Изменить владельца указанного файла, введя chown mysql /var/run/mysqld/mysqld.sock,

  3. Как только "2" будет сделано, перезапустите службу MySQL, введя service mysql restart или же /etc/init.d/mysql restart,

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

Проверить "bind-adress" параметр в my.cnf.

Еще попробуйте с командой:

mysql -h 127.0.0.1 -P 3306 -u root -p
  • -х для хозяина 127.0.0.1то есть localhost

  • -P (обратите внимание -P в верхнем регистре) для порта 3306порт по умолчанию для MySQL

Ваш mysql-сервер может не работать. Убедитесь, что он работает, набрав mysql.server start в терминал.

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

sudo yum install mysql-server
sudo service mysqld restart

В Amazon EC2 не установлен сервер (установлен только клиент), поэтому в этом случае вам необходимо установить его на свой экземпляр, а затем попытаться

 mysql -u root -p

чтобы проверить, сработало ли это.

Вместо использования localhost:

mysql -u myuser -pmypassword -h localhost mydatabase

Используйте 127.0.0.1

mysql -u myuser -pmypassword -h 127.0.0.1 mydatabase

(также обратите внимание, что между -p и mypassword не должно быть пробела)

Наслаждаться:)

Полностью удалить MySQL

sudo apt-get remove --purge mysql\*

переустановите это

sudo apt-get install mysql-server mysql-client

проверить, работает ли он

sudo mysql

sudo apt-get install php7.2-fpm php7.2-mysql

Я думаю всякий раз, когда вы получаете ошибку

ОШИБКА 2002 (HY000): Не удается подключиться к локальному серверу MySQL через сокет '/var/lib/mysql/mysql.sock'

Я рекомендую сначала проверить, mysql демон работает... Большую часть времени он не будет работать по умолчанию. Вы можете проверить это по /etc/init.d/mysqld status,

Если он не запущен, сначала запустите его:

.../etc/init.d/mysqld start.

Бьюсь об заклад, это будет работать на 110%.

Вот что сработало для меня:

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

Это создает ссылку.

Убедитесь, что у вас есть резервные копии важных баз данных, а затем попробуйте удалить вещи, связанные с MySQL:

apt-get remove --purge mysql\*

Затем установите его снова:

apt-get install mysql-server mysql-client

Это сработало для меня, и данные были сохранены.

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

apt-get install php5-fpm php5-mysql

Я также столкнулся с той же проблемой, это произойдет, если ваш сервер MySQL не работает по умолчанию, он снова остановится через несколько секунд, поэтому вы снова запускаете ($ sudo service mysql start) команду, которую можете изменить, если знаете.

для этой команды использования

$ sudo service mysql start

(введите пароль пользователя, если требуется, потому что мы используем sudo), а затем запустите

$ sudo mysql -u root -p (при необходимости введите пароль пользователя)

теперь вы получили свою базу данных

Кажется, ваш MYSQL остановлен. используйте команду ниже, чтобы снова запустить MySQL

sudo service MySQL start

Я тоже получил эту проблему, но я только что:

sudo service mysql restart 

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

Если на вашем Linux-компьютере установлен XAMPP, попробуйте скопировать my.cnf файл из /opt/lampp/etc/my.cnf в /etc/my.cnf,

Затем запустите mysql -u root снова... Теперь у вас должен быть правильный сокет, и вы сможете запустить клиент MySQL.

Я НАШЕЛ РЕШЕНИЕ

Перед запуском команды: mysql_secure_installation

  • Шаг 1: sudo systemctl stop mariadb
  • Шаг 2: sudo systemctl start mariadb
  • Шаг 3: mysql_secure_installation

Затем он спросит пароль root, и вы можете просто нажать Enter и установить новый пароль root.

На сервере Debian, Джесси, мое рабочее решение было просто сделать

service mysql restart
service mysql reload

как пользователь root

Если ваша установка была недавней, вы должны подтвердить, является ли ваша установка установочным SERVER... как mysql-server-5.5.. Может быть, вы установили только "mysql" .. это только клиент, а не сервер.

Я решил эту проблему с перезапустить MySQL

/etc/init.d/mysql stop

а также

/etc/init.d/mysql start

вот и все.

У вас нет разрешения на создание каталога /var/run/mysqld. Поэтому создайте и дайте разрешение следующим образом.

  • mkdir -p /var/run/mysqld
  • chown mysql: mysql /var/run/mysqld

Проверьте, есть ли у вас правильные права:

sudo chmod 755 /var/lib/mysql/mysql

У меня были такие же проблемы, и это работало на меня. После этого я смог запустить MySQL.

Откройте терминал и введите:

sudo apt-get purge mysql-client-core-5.6

sudo apt-get autoremove

sudo apt-get autoclean

sudo apt-get install mysql-client-core-5.5

sudo apt-get install mysql-server  

И клиент ядра базы данных MySQL, и пакеты MySQL Server будут иметь одинаковую версию 5.5. MySQL Client 5.5 и MySQL Server 5.5 являются текущими "лучшими" версиями этих пакетов в Ubuntu 14.04, как определено сопровождающими пакетов.

Если вы предпочитаете установить MySQL Client 5.6 и MySQL Server 5.6, вы также можете найти пакеты mysql-client-core-5.6 и mysql-server-5.6 в Центре программного обеспечения Ubuntu. Важно то, что номера версий клиента и сервера совпадают в любом случае.

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

В моем случае порт по умолчанию 3306 использовался каким-то другим процессом, и поэтому он не запускался. После того, как я остановил другой сервис и сделал sudo service mysql start, это работало нормально. Кстати, вы можете использовать что-то вроде sudo lsof -Pn -iTCP:3306 чтобы увидеть, кто может использовать порт.

Другие вопросы по тегам