MySQL не работает: mysql "ошибка 1524 (HY000): плагин "auth socket" не загружен"

моя локальная среда:

  • свежий Ubuntu 16.04
  • С PHP 7
  • с установленным MySQL 5.7

    sudo apt-get install mysql-common mysql-server
    

когда я попытался войти в MySQL (через CLI):

mysql -u root -p

я столкнулся с циклической проблемой с 3 шагами.

1) Сначала была проблема с сокетом

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

решение: перезагрузка ПК.

что привело к еще ошибка:

2) с отказом в доступе

ERROR 1698 (28000): Access denied for user 'root'@'localhost'.

можно вопрос? Неверный пароль для пользователя "root"!

устранение: сброс пароля root с помощью этого урока.

С правильным паролем и рабочим гнездом, появляется последняя ошибка.

3) неверный плагин auth

mysql "ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded"

здесь я остановился или как-то добрался до 1) снова.

4 ответов


у меня есть решение!

при сбросе пароля root на Шаге 2), также измените плагин auth на mysql_native_password:

use mysql;
update user set authentication_string=PASSWORD("") where User='root';
update user set plugin="mysql_native_password" where User='root';  # THIS LINE

flush privileges;
quit;

это позволило мне успешно войти!


полное решение код

1. команды запустить bash

# 1. first, run these bash commands
sudo /etc/init.d/mysql stop # stop mysql service
sudo mysqld_safe --skip-grant-tables & # start mysql without password
# enter -> go
mysql -uroot # connect to mysql

2. затем запустите MySQL commands => copy вставьте это в cli вручную

use mysql; # use mysql table
update user set authentication_string=PASSWORD("") where User='root'; # update password to nothing
update user set plugin="mysql_native_password" where User='root'; # set password resolving to default mechanism for root user

flush privileges;
quit;

3. запустите больше команд bash

sudo /etc/init.d/mysql stop 
sudo /etc/init.d/mysql start # reset mysql 
mysql -u root -p root # try login to database

4. Выпуск сокета (из ваших комментариев)

когда вы видите гнездо ошибка, сообщество пришло с 2 возможными решениями:

sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld
sudo mysqld_safe --skip-grant-tables &

(спасибо @Cerin)

или

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

(спасибо @ Peter Dvukhrechensky)


слепые пути и возможные ошибки края

используйте 127.0.0.1 вместо localhost

mysql -uroot # "-hlocalhost" is default

может привести к "отсутствует файл" или "ошибка" та.

mysql -uroot -h127.0.0.1

строительство лучше.

пропустить проблему сокета

Я нашел много способов, чтобы создать mysqld.sock файл, изменить права доступа или символическую ссылку на него. Это не было вопросом.

пропустить

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


вы можете попробовать эти шаги:

остановить службу Mysql 1st sudo /etc/init.d/mysql stop

войти как root без пароля sudo mysqld_safe --skip-grant-tables &

после входа в mysql терминал вам нужно будет выполнить команды больше:

use mysql;

UPDATE mysql.user SET authentication_string=PASSWORD('solutionclub3@*^G'), plugin='mysql_native_password' WHERE User='root';

flush privileges;

sudo mysqladmin -u root -p -S /var/run/mysqld/mysqld.sock shutdown

после перезагрузки сервера mysql Если вы все еще сталкиваетесь с ошибкой, вы должны посетить:сбросить MySQL 5.7 root пароль Ubuntu 16.04


вы можете попробовать, как это работает для меня.

запустить сервер:

sudo service mysql start

Теперь перейдите в папку sock:

cd /var/run

назад носок:

sudo cp -rp ./mysqld ./mysqld.bak

остановить сервер:

sudo service mysql stop

восстановить носок:

sudo mv ./mysqld.bak ./mysqld

начать mysqld_safe:

 sudo mysqld_safe --skip-grant-tables --skip-networking &

Init MySQL shell:

 mysql -u root

изменить пароль:

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

mysql> use mysql;

теперь введите ниже два запроса:

mysql> update user set authentication_string=password('1111') where user='root';
mysql> update user set plugin="mysql_native_password" where User='root';  # THIS LINE

теперь все будет ОК.

mysql> flush privileges;
mysql> quit;

для проверки:

mysql -u root -p

готово!

вы также можете проверить имя хоста / phpmyadmin


попробуй: sudo mysql_secure_installation

работа в Ubuntu 18.04