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

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

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

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

Ответ 1

У меня была эта проблема и я решил ее установить, установив 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, тогда проблема может быть решена.

Ответ 2

Попробуйте следующее:

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

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

telnet 127.0.0.1 3306 

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

Ответ 3

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


Для сброса пароля

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

  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. Сбросить пароль

    -- MySQL version < 5.7
    update user set password=PASSWORD("mynewpassword") where User='root';
    
    -- MySQL 5.7, mysql.user table "password" field -> "authentication_string"
    
    update user set authentication_string=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.

Ответ 4

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

  • Войдите как super user или используйте sudo
  • Откройте /etc/mysql/my.cnf с помощью gedit
  • Найдите bind-address и измените его значение на IP-адрес хост-компьютера сервера базы данных. Для меня это было localhost или 127.0.0.1
  • Сохраните и закройте файл.
  • Вернитесь к терминалу и выполните sudo service mysql start

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

Ответ 5

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

mysql.server start

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

brew services start mysql

Ответ 6

У меня была аналогичная проблема. 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,

Ответ 7

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

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

служба mysql restart

или

служба mysql stop

служба mysql start

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

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

df -h

Ответ 8

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

ps -ef | grep mysql
kill [the id]

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

sudo /etc/init.d/mysql restart

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

sudo /etc/init.d/mysql start

Затем я вошел в систему как admin, и я закончил.

Ответ 9

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

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

Если MySQL действительно запущен и работает локально, проверьте ваш файл my.cnf. Должна быть строка типа

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

Посмотрите, соответствует ли это местоположению сокета, указанному в вашем сообщении.

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

Ответ 10

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

Это то, что я сделал для решения моей проблемы:

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

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

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

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

Ответ 11

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

Ответ 12

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

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

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

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

Ответ 13

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

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

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

Ответ 14

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

sudo yum install mysql-server
sudo service mysqld restart

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

 mysql -u root -p

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

Ответ 15

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

ERROR 2002 (HY000): невозможно подключиться к локальному серверу MySQL через сокет '/var/lib/mysql/mysql.sock'

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

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

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

Я уверен, что это будет 110% работать.

Ответ 16

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

mysql -u myuser -pmypassword -h localhost mydatabase

Использовать 127.0.0.1

mysql -u myuser -pmypassword -h 127.0.0.1 mydatabase

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

Наслаждайтесь:)

Ответ 17

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

apt-get remove --purge mysql\*

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

apt-get install mysql-server mysql-client

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

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

apt-get install php5-fpm php5-mysql

Ответ 18

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

Ответ 19

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

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

Ответ 20

У меня тоже есть эта проблема, но я просто сделал:

sudo service mysql restart 

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

Ответ 21

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

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

$ sudo service mysql start   

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

$ sudo mysql -u root -p          (put user password if required )

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

Ответ 22

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

Ответ 23

В моем случае он работал, выполняя некоторые R & D:

Я могу подключиться к MySQL, используя

root-debian#mysql -h 127.0.0.1 -u root -p

Но он не работает с mysql -u root -p.

Я не нашел bind-address в my.cnf. Таким образом, я outcommented параметр socket=/var/lib/mysql/mysqld.sock в my.cnf, который вызывал у меня проблему с логином.

После перезапуска службы все прошло нормально:

[email protected]:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.6.19 MySQL Community Server (GPL)

Ответ 24

Я нашел решение

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

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

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

Ответ 25

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

/etc/init.d/mysql stop

а также

/etc/init.d/mysql start

это.

Ответ 26

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

Ответ 27

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

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 Software Center. Важно то, что номера версий клиента и сервера совпадают в любом случае.

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

Ответ 28

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

sudo service mysql stop
ps -ef | grep mysql

Процесс mysql всегда был там, похоже, что он блокировал файл сокета, и новый процесс mysql не смог создать его сам.

поэтому это помогло

cd /var/run
sudo cp mysqld/ mysqld.bc -rf
sudo chown mysql:mysql mysqld.bc/
sudo service mysql stop
sudo cp mysqld.bc/ mysqld -rf
sudo chown mysql:mysql mysqld -R
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &

Теперь я могу войти в базу данных, используя

mysql -u root

Затем обновить пароль root:

UPDATE user SET authentication_string=password('YOURPASSWORDHERE') WHERE user='root';
FLUSH PRIVILEGES;

PS: мне не удалось обновить root passwod, похоже, проблема с плагином "auth_socket", поэтому мне пришлось создать нового пользователя с полными привилегиями

insert into user set `Host` = "localhost", `User` = "super", `plugin` = "mysql_native_password", `authentication_string` = NULL, `password_expired` = "N", `password_lifetime` = NULL, `account_locked` = "N", `Select_priv` = "Y",
`Insert_priv` = "Y", `Update_priv` = "Y", `Delete_priv` = "Y", `Create_priv` = "Y", `Drop_priv` = "Y", `Reload_priv` = "Y", `Shutdown_priv` = "Y", `Process_priv` = "Y", `File_priv` = "Y",
`Grant_priv` = "Y",  `References_priv` = "Y", `Index_priv` = "Y", `Alter_priv` = "Y", `Show_db_priv` = "Y", `Super_priv` = "Y", `Create_tmp_table_priv` = "Y", `Lock_tables_priv` = "Y",
`Execute_priv` = "Y", `Repl_slave_priv` = "Y",  `Repl_client_priv` = "Y",  `Create_view_priv` = "Y", `Show_view_priv` = "Y", `Create_routine_priv` = "Y", `Alter_routine_priv` = "Y",
`Create_user_priv` = "Y",  `Event_priv` = "Y", `Trigger_priv` = "Y", `Create_tablespace_priv` = "Y";

Это создает пользователя "супер" без пароля, а затем вы можете подключиться к mysql -u super

Ответ 29

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

service mysql restart
service mysql reload

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

Ответ 30

У меня была та же проблема. После долгих поисков я не нашел ответа.

Наконец, я проверил каталог /tmp, и его разрешения были 755. Я изменил его разрешения на 777, а mysqld начал без проблем.