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

342

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

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

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

  • 0
    Наверное переустановить проще: stackoverflow.com/a/31984482/763744
  • 0
    Сбросьте пароль, остановив MySQL и запустив его в безопасном режиме, пропустив таблицы --grant
Показать ещё 4 комментария
Теги:
phpmyadmin
lamp
forgot-password
mysql-error-2002

67 ответов

193

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

  • 0
    У вас может быть запущен демон mysql и установлено ядро mysql-server, но вам нужно установить mysql-сервер, который является двоичным файлом И настройкой базы данных системы!
  • 66
    sudo apt-get install mysql-server для установки mysql в ubuntu
Показать ещё 6 комментариев
155

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

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

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

telnet 127.0.0.1 3306 

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

  • 1
    Я получаю ту же ошибку. И я проверил, и связывание по умолчанию в main и my.cnf уже установлено на 127.0.0.1. Однако использование вашей команды выше позволило мне подключиться. Придется продолжать охоту, чтобы понять, почему просто выполнение «mysql» приводит к ошибке.
  • 0
    Я получаю telnet: Невозможно подключиться к удаленному хосту: соединение отклонено в результате команды telnet. Однако Apache все еще работает, так как я могу открыть localhost
Показать ещё 2 комментария
86

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


В reset пароль

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

  • Остановка mysql

    sudo /etc/init.d/mysql stop
    

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

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

    sudo mysqld_safe --skip-grant-tables &
    
  • Войдите в MySQL с помощью root

    mysql -uroot
    
  • Выберите базу данных MySQL, чтобы использовать

    use mysql;
    
  • reset пароль

    update user set password=PASSWORD("mynewpassword") where User='root';
    
  • Снимите привилегии

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

    quit
    
  • Остановить и снова запустить сервер

    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
    
  • Войти с новым паролем

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

Это было взято из reset пароля пользователя MySQL.


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

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

 update user set authentication_string=password('mynewpassword') where user='root';
  • 0
    Обновление пароля пользователя не работало для меня, однако после входа в монитор MySQL и использования базы данных mysql repair table user use_frm мне решить эту проблему. - stackoverflow.com/questions/4297592/…
  • 15
    В MySQL 5.7 поле пароля в поле таблицы mysql.user было удалено, теперь имя поля - «authentication_string», поэтому (5) следует update user set authentication_string=password('mynewpassword') where user='root';
Показать ещё 4 комментария
57

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

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

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

  • 3
    После этого я просто запустил sudo service mysql restart и все заработало.
  • 0
    В моем случае ошибка была изменен IP, поэтому я установил bind-address = localhost
Показать ещё 5 комментариев
31

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

mysql.server start

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

brew services start mysql
  • 0
    Это работает для Mac!
  • 4
    mysql.server start : команда не найдена (Ubuntu)
25

У меня была аналогичная проблема. 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,
  • 0
    Я не знал, что должен был позвонить "sudo service mysql start". В прошлый раз, когда я установил MySQL на Ubuntu, я думаю, что он автоматически запускался после установки. MariaDB на Manjaro требует, чтобы служба была явно запущена после установки.
24

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

ps -ef | grep mysql
kill [the id]

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

sudo /etc/init.d/mysql restart

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

sudo /etc/init.d/mysql start

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

  • 0
    Сделал это на Mac тоже, и это сработало
  • 0
    ну, я на самом деле прерывал MySQL перед тем, как он завис. Тогда я получаю "* Пожалуйста, посмотрите на системный журнал." и «ОШИБКА 2002 (HY000): невозможно подключиться к локальному серверу MySQL через сокет '/var/run/mysqld/mysqld.sock' (111)». Наконец, я понимаю, что он пытается восстановить себя, поэтому я убиваю и перезапускаю его.
Показать ещё 2 комментария
20

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

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

служба mysql restart

или

служба mysql stop

служба mysql start

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

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

df -h

  • 2
    Со мной случилось то же самое - полный диск. Убрал немного места, перезагрузился и проблема ушла.
  • 1
    Если это ваша проблема при выполнении: "/etc/init.d/mysqld start" сообщит вам, что ваш раздел на диске заполнен
Показать ещё 1 комментарий
19

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

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

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

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

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

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

18

Я просто испытал ту же проблему после того, как мне пришлось перезапустить мой производственный сервер. Я запускаю 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.

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

  • 0
    Я заметил, что файла там нет, и просто перезапустил сервер MySQL. Он автоматически создал файл и запустился просто отлично. Спасибо за лидерство.
15

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

11

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

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

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

  • 0
    У меня не сработало :( Это создает символическую ссылку между двумя папками askubuntu.com/a/56340/242873
10

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

sudo yum install mysql-server
sudo service mysqld restart

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

 mysql -u root -p

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

  • 0
    Не удалось перезапустить mysqld.service: модуль mysqld.service не найден. В Ubuntu 16.04
9

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

mysql -u myuser -pmypassword -h localhost mydatabase

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

mysql -u myuser -pmypassword -h 127.0.0.1 mydatabase

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

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

  • 0
    Вы также можете не включать свой пароль из командной строки для обеспечения безопасности, используя эту строку: mysql -u myuser -p -h 127.0.0.1 mydatabase MySQL спросит вас о вашем пароле и не отобразит его.
  • 1
    Это решило это для меня. Тем не менее, я до сих пор удивляюсь, почему 127.0.0.1 работает, а localhost нет ?!
9

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

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

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

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

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

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

8

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

apt-get remove --purge mysql\*

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

apt-get install mysql-server mysql-client

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

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

apt-get install php5-fpm php5-mysql
7

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

sudo service mysql restart 

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

7

Проверьте параметр "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

7

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

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

6

В моем случае он работал, выполняя некоторые 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, который вызывал у меня проблему с логином.

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

root@debian:~# 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)
6

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

5

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

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

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

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

  • 2
    Это сработало для меня. Спасибо
  • 0
    Пожалуйста, подтвердите ответ
Показать ещё 1 комментарий
5

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

service mysql restart
service mysql reload

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

  • 1
    Спас мой день ... Спасибо большое :)
5

В моем случае, похоже, что я действительно не смог убить процесс 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

  • 0
    спасибо за ответ, и я смог войти в mysql, но в моих базах данных нет пользовательских таблиц.
  • 0
    Это решение работает. Но прежде чем выполнить инструкцию sql, чтобы изменить пароль для пользователя root, вам нужно выбрать базу данных. Выполните следующую инструкцию <br> use mysql; <br> и теперь вы можете использовать <br> UPDATE user SET authentication_string=password('YOURPASSWORDHERE') WHERE user='root'; FLUSH PRIVILEGES;
5

У меня была такая же проблема. Иногда это происходит, если ваш сервис MySQL отключен.

Итак, вы должны запустить его:

sudo service mysql start
4

Теперь он работает...

Я выполнил учебник Установка MariaDB 10.1.16 на Mac OS X с помощью Homebrew, чтобы решить эту проблему.

Но не забудьте убить или удалить старую установку MariaDB.

4

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

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

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

4

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

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

4

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

4

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

3

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

/etc/init.d/mysql stop

а также

/etc/init.d/mysql start

это.

3

То же самое на Ubuntu 14.04 (Trusty Tahr).

Если вы установили XAMPP, установка mysql-сервера не является решением, потому что вы получите доступ к другому MySQL!

Вы должны использовать правый сокет для доступа. Обычно это:

/opt/lampp/var/mysql/mysql.sock

Вместо этого измените его на:

/var/run/mysqld/mysqld.sock
3

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

sudo chmod 755 /var/lib/mysql/mysql

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

2

Для меня обновление решило проблему:

В Ubuntu:

sudo apt-get update
sudo apt-get upgrade

В CentOS:

sudo yum update
2

Просто скопируйте файл /opt/lampp/etc/my.cnf в /etc/mysql/my.cnf.

И в типе терминала:

mysql -u root

Вы получите приглашение mysql>:

mysql> Update mysql.user set Password=PASSWORD('your_password') where user='root';

mysql> FLUSH PRIVILEGES;
  • 1
    Добро пожаловать в StackOverflow Sudarsan. Это профессиональный сайт вопросов и ответов. Пожалуйста, посетите, как написать хороший ответ . Хотя это не так, но вы даете ответ на вопрос, который был задан 2 года назад.
2

В моем случае проблема была повреждена страницей во всех моих базах данных (проверьте журнал ошибок mysql).

Я решил это с помощью Forcing InnoDB Recovery. Трюк редактирует /etc/mysql/my.cnf и добавляет

innodb_force_recovery = 4

чуть ниже

[mysqld]

И затем перезапустите mysql. После проверки правильности работы теперь удалите строку снова.

2

Вы можете сначала проверить, запущена ли служба, с помощью:

ps ax | grep mysql

Я получил этот ответ:

6104 pts/0    S      0:00 /bin/sh /usr/bin/mysqld_safe
6431 pts/0    Sl     0:01 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --pid-file=/var/run/mysqld/m

Никакой ответ означает, что служба не запущена, так что:

service  mysql start
  • 0
    Правильный способ проверить это - сделать sudo /etc/init.d/mysqld status или sudo service mysqld status
2

Я не могу это объяснить, но в kubuntu 12.04.2 после

sudo apt-get autoremove linux-headers-3.2.0-37 linux-headers-3.2.0-37-generic

он начал работать

1

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

  • mkdir -p/var/run/mysqld
  • chown mysql: mysql/var/run/mysqld
1
For CentOS Linux release 7.3
The mysql.sock file path is /var/lib/mysql/mysql.sock
Edit /etc/my.cnf file and put below entry
This will solve your problem.

[client]
user=root
password=Passw0rd
port=3306
socket=/var/lib/mysql/mysql.sock
[mysqld]
bind-address=0.0.0.0

После этого перезапустите службу

service mysql restart
  • 0
    Этот ответ фактически объясняет причину ошибки
1

Простое решение на моем сервере: после перехода на новый сервер Debian 7 с моими базами данных MySQL второй локальный IP-адрес, 127.0.1.1 отсутствовал в моем файл hosts. Добавив это, были устранены предупреждения:

echo -e "\n127.0.1.1       $(hostname)" >> /etc/hosts
1

Для меня это было:

Откройте /etc/mysql/my.cnf или /etc/my.cnf и найдите "bind-address". Это было 127.0.0.1. Я преобразовал его в localhost, поэтому результат строки должен быть "bind-address = localhost".

В противном случае вы должны запустить сервер MySQL с IP-адресом, который существовал в директиве адрес-адрес, т.е. mysql -h 127.0.0.1.

1

Этот ответ связан с обновлением до MySQL 5.6 на машинах с небольшим объемом оперативной памяти

У меня была такая же проблема при обновлении с MySQL 5.5 до 5.6 на моем Debian 8 (Jessie). MySQL не был запущен (статус показывался активным/выведенным), и просто сделать service mysql start не удалось, потому что, как я нашел из файла журнала /var/logs/mysql/error.log:

InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(136019968 bytes) failed; errno 12
Cannot allocate memory for the buffer pool

Недостаточно памяти: у меня было только 256 МБ ОЗУ.

В MySQL есть параметр, performance_schema. По умолчанию он отключен в MySQL 5.5.

https://dev.mysql.com/doc/refman/5.5/en/performance-schema-startup-configuration.html

Но в MySQL 5.6 по умолчанию включено, и просто добавив следующую строку в файл /etc/mysql/my.cnf и перезагрузив ее, она сработала.

performance_schema = off

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

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

1

Установите mysql-сервер:

sudo apt-get install mysql-server
enter password as root

Логин:

mysql -u root -p root

Здесь -u user name и -p password были заданы при установке сервера MySQL. Он будет работать так, как он работал у меня.

  • 0
    Речь идет о подключении сервера MySQL через сокет, который используется в PHP и таких языках, как Ruby On Rails.
1

У меня была такая же проблема. Я нашел это.

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

Это связано с тем, что перед запуском клиента MySQL вы не запускаете демон mysqld. Файл /var/lib/mysql/mysql.sock будет автоматически создан при запуске первого экземпляра MySQL.

Чтобы исправить:

Сначала запустите демон MySQL, затем введите mysql:

/etc/init.d/mysqld start
mysql

Изменение пароля Root MySQL

По умолчанию корневой пароль пуст для базы данных MySQL. Рекомендуется изменить пароль root MySQL на новый с точки зрения безопасности.

mysql> USE mysql;
mysql> UPDATE user SET Password=PASSWORD('newpassword') WHERE user='root';
mysql> FLUSH PRIVILEGES;

После завершения проверки, зайдите в систему:

mysql -u root -p
Enter Password: <your new password>
  • 0
    Starting mysqld: [ OK ] но все еще его, когда я запускаю mysql ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
1

Также проверьте my.conf (/etc/mysql/my.cnf) и посмотрите, установлен ли адрес привязки 127.0.0.1.

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

1

Вы работаете локально, это означает, что ваш клиент работает на том же компьютере, что и ваш сервер.

Убедитесь, что ваш пользователь Unix действительно может получить/прочитать /var/run/mysqld/mysqld.sock:

ls -als /var
ls -als /var/run
ls -als /var/run/mysqld
ls -als /var/run/mysqld/mysqld.sock

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

1

Теперь у меня была эта проблема и она была решена.

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

Сначала проверьте, запущен ли сервер mysql:

netstat -tap | grep mysql

Вы должны увидеть что-то вроде этого:

$ sudo netstat -tap | grep mysql
tcp        0      0 localhost:mysql         *:*          LISTEN     6639/mysqld     

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

/etc/init.d/mysql restart

Это должно решить вашу проблему, если она установлена.

1

Чтобы предотвратить возникновение проблемы, вы должны выполнить изящное завершение работы сервера из командной строки, а не отключать сервер.

shutdown -h now

Это остановит запущенные службы перед отключением компьютера.

Основываясь на Centos, дополнительный метод для его восстановления снова при запуске этой проблемы заключается в перемещении mysql.sock:

mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak

service mysqld start

Перезапуск службы создает новую запись с именем mqsql.sock

1

Если вы используете Ubuntu, это может быть вопросом привилегий.

Проверьте права на свои каталоги. Недостаточно быть в корневой группе, также использовать chmod в каталогах, которые MySQL пишет (например, /var/run/mysqld/ для создания файла mysqld.pid).

Это было полезно для меня.

0

Мое хранилище на сервере было переполнено, это мешало запуску Mysql. Понял идею отсюда. Увеличение HD и перезагрузка исправили проблему.

0

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

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

$ sudo service mysql start

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

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

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

0

В моем случае это было просто потому, что mysql был остановлен из-за отсутствующей папки /var/log/mysql, определенной в /etc/mysql/my.cnf. После его создания я мог бы запустить mysql, и он работал как обычно.

0

Попробуйте перезагрузить сервер с помощью

sudo /usr/local/mysql/support-files/mysql.server start

Если есть какая-либо ошибка, выполните следующие шаги

  • mysqld

Вы увидите следующий журнал. Обратите внимание на выделенную часть каталога MySQL здесь

mysqld: не удается изменить каталог '/usr/local/mysql-5.7.14-osx10.11-x86_64/data/' (Errcode: 13 - Permission denied) 2016-10-04T14: 09: 19.392581Z 0 [Warning] TIMESTAMP с неявным значением DEFAULT устарела. Пожалуйста, используйте --explicit_defaults_for_timestamp server (подробнее см. в документации). 2016-10-04T14: 09: 19.392847Z 0 [Предупреждение] Небезопасный Конфигурация для -secure-file-priv: Текущее значение не ограничивает расположение сгенерированных файлов. Попробуйте установить его на действительный, непустой дорожка. 2016-10-04T14: 09: 19.392921Z 0 [Примечание] mysqld (mysqld 5.7.14) начиная с процесса 1402... 2016-10-04T14: 09: 19.397569Z 0 [Предупреждение] Невозможно создать тестовый файл
/usr/local/mysql-5.7.14-osx10.11-x86_64/data/Sudharshan.lower-test
2016-10-04T14: 09: 19.397597Z 0 [Warning] Невозможно создать тестовый файл /usr/local/mysql -5.7.14-osx10.11-x86_64/data/Sudharshan.lower-test
2016-10-04T14: 09: 19.397712Z 0 [ERROR] не удалось установить datadir для /usr/local/mysql -5.7.14-osx10.11-x86_64/data/
2016-10-04T14: 09: 19.397776Z 0 [ОШИБКА] Отмена
2016-10-04T14: 09: 19.397795Z 0 [Примечание] Binlog end
2016-10-04T14: 09: 19.397925Z 0 [Примечание] mysqld: завершение завершено

  1. sudo chown -R _mysql:_mysql /usr/local/mysql-5.7.14-osx10.11-x86_64

Обратите внимание на имя папки MySQL из /usr/local с предыдущего шага, и в моем случае это mysql-5.7.14-osx10.11-x86_64 и вы должны обновить его на основе журнала, который вы получаете, чтобы предоставить доступ для чтения в каталог MySQL

  1. sudo /usr/local/mysql/support-files/mysql.server start

Запуск MySQL
УСПЕХ!

0

Совет: всегда задавайте MySQL, в чем проблема. В моем случае less /var/log/mysql/error.log и см. Это:

2015-07-28 12:01:48 23224 [ERROR] /usr/sbin/mysqld: unknown variable 'log_slow_queries=/var/log/mysql/mysql-slow.log'
2015-07-28 12:01:48 23224 [ERROR] Aborting

Жалуется, потому что я раскомментировал эту опцию в my.cnf, но после комментирования этой опции она началась без каких-либо проблем.

0

Эта ошибка также может возникнуть, если вы попытаетесь изменить каталог, в котором хранится база данных, но введете неправильный каталог в файл конфигурации (например, опечатку во втором диске как D вместо точного D_), Вместо того, чтобы сообщать вам, что каталог typo не существует, он скажет вам, что вам не хватает доступа к нему (что приведет к попытке изменить разрешения для каталога typo, что он позволит вам сделать). Поэтому, если вы получите эту ошибку при изменении каталогов, дважды проверьте файл конфигурации и убедитесь, что у вас нет опечатки.

0

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

Я проверяю журналы MySQL в /var/log/mysql, и я видел это:

150309  5:03:19 [ERROR] /usr/sbin/mysqld: unknown variable   'lower_case_tables_names=1'

Я открыл файл /etc/mysql/my.cnf и вывел из строя строку #. После этого мне удалось подключиться к базе данных.

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

  • 0
    Что такое "линодный сервер"? Вы имеете в виду "сервер Linux"?
0

В /etc/mysql/my.cnf проверьте последнюю строку:

!includedir /etc/mysql/conf.d/
  • 2
    Вам нужно какое-то объяснение.
0

У меня было это на Ubuntu, и, как я понял, было более одного экземпляра mysqld.

Похоже, что предыдущий не был полностью остановлен, а новый уже начался. Запуск "/etc/init.d/mysql stop" не помог, он всегда возвращал "ОК", и сразу после этого автоматически запускался новый экземпляр:

        $ sudo /etc/init.d/mysql stop
         * Stopping MySQL database server mysqld        [ OK ] 
        $ pgrep mysql
        28315
        $ sudo /etc/init.d/mysql stop
         * Stopping MySQL database server mysqld        [ OK ] 
        $ pgrep mysql
        28570
        $ sudo /etc/init.d/mysql stop
         * Stopping MySQL database server mysqld        [ OK ] 
        $ pgrep mysql
        28763
        ..... etc ...

К счастью, следующая команда устранила проблему:

    $ sudo service mysql stop
    mysql stop/waiting

    $ ps -ef | grep mysql
    29841 26858  0 10:59 pts/8    00:00:00 grep --color=auto mysql <--- IT gone ! 

После этого мне снова удалось запустить mysql и увидеть, что mysql.sock был успешно создан.

0
sudo touch /var/lib/mysql/.force_upgrade
sudo rcmysql restart

работал у меня, когда у меня была эта проблема

0

Это может быть проблема с файлом конфигурации. У меня была аналогичная проблема, и я не мог найти решение в Интернете. Я заметил, что у меня было два файла my.cnf, один в /etc/mysql, а другой - в /etc. Выполните следующие шаги:

  • Проверьте my.cnf файлы на вашем компьютере с помощью locate my.cnf.

  • Если есть две записи, то есть /etc/my.cnf и /etc/mysql/my.cnf, переименуйте /etc/mysql/my.cnf в другое, например /etc/mysql/my.cnf.old

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

0

Вы проверили, работает ли LAMPP?

sudo bash <path>/lampp start

Для меня путь

sudo bash /opt/lampp/lampp start
0

Модернизация MySQL исправила его для меня. На серверах на базе RHEL просто запустите:

sudo yum upgrade mysql-server
0

Вы должны подтвердить владельца группы для /var/run/mysqld. Если это не mysql.mysql, тогда выполните:

su root
chown mysql.mysql /var/run/mysqld
0

Я решил эту проблему, удалив эту строку из моего /etc/mysql/my.conf в разделе mysqld ([mysqld]):

default-character-set=utf8

Перезагрузитесь, и все будет хорошо.

  • 1
    Какое отношение имеет кодировка символов к паролю?
  • 0
    @Moslem Эта проблема не всегда связана ни с паролем, ни с InnoDB. Я не установил пароль и не использовал InnoDB (skip-innodb) и получил ту же ошибку.
-1

Я должен был сказать:

sudo /etc/init.d/mysqld start
-3

Сделайте команду

перезагрузка sudo

работал у меня.

  • 0
    это просто перезапустило мою систему. без изменений с ошибкой
  • 1
    как это должно решить проблему?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню