it-roy-ru.com

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) Неправильный плагин авторизации

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

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

71
Tomáš Votruba

Я получил решение!

При сбросе пароля 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. сначала запустите эти команды bash

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 => скопируйте и вставьте это в 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
# try login to database, just press enter at password Prompt because your password is now blank
mysql -u root -p 

4. Проблема с сокетом (из ваших комментариев)

Когда вы видите ошибку socket, сообщество предлагает 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  

(спасибо @ Петру Двухреченскому)


Слепые пути и возможные ошибки Edge

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

mysql -uroot # "-hlocalhost" is default

Может привести к «отсутствующему файлу» или ошибке slt.

mysql -uroot -h127.0.0.1

Работает лучше.

Пропустить вопрос сокета

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

Пропустить файл my.cnf

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

212
Tomáš Votruba

Вы можете попробовать следующим образом это работает для меня.

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

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('123456') where user='root';
mysql> update user set plugin="mysql_native_password" where User='root'; 

Теперь все будет хорошо.

mysql> flush privileges;
mysql> quit;

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

mysql -u root -p

сделанный!

N.B, After login please change the password again from phpmyadmin

Теперь проверьте hostname/phpmyadmin

Username: root

Password: 123456

Для более подробной информации, пожалуйста, проверьте Как сбросить забытый пароль phpmyadmin в Ubuntu

13
Bablu Ahmed

Вы можете попробовать эти несколько шагов:

Остановите Mysql Service 1st Sudo /etc/init.d/mysql stop 

Войдите в систему как root без пароля Sudo mysqld_safe --skip-grant-tables & 

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

use mysql;

UPDATE mysql.user SET authentication_string=PASSWORD('[email protected]*^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

8
Inderpal Singh

Команда mysql по умолчанию использует сокеты UNIX для подключения к MySQL.

Если вы используете MariaDB, вам нужно загрузить Unix Socket Authentication Plugin на стороне сервера.

Вы можете сделать это, отредактировав конфигурацию [mysqld] следующим образом:

[mysqld]
plugin-load-add = auth_socket.so

В зависимости от дистрибутива, файл конфигурации обычно находится по адресу /etc/mysql/ или /usr/local/etc/mysql/

3
rustyx

Для Ubuntu 18.04 и MySQL 5.7

  • шаг 1: Sudo mkdir/var/run/mysqld;

    шаг 2: Судо чоун mysql/var/run/mysqld

    шаг 3: Sudo mysqld_safe --skip-grant-tables & quit (используйте quit, если его застрял)

войти в MySQL без пароля 

  • шаг 4: sudo mysql --user = root mysql

    шаг 5: ВЫБЕРИТЕ пользователя, authentication_string, плагин, Host FROM mysql.user;

    шаг 6: ИЗМЕНИТЕ ПОЛЬЗОВАТЕЛЯ 'root' @ 'localhost', ИДЕНТИФИЦИРОВАНО С mysql_native_password BY 'root'

сейчас войдите с 

  • mysql -u root -p 
1
arunava maiti

Попробуйте: Sudo mysql_secure_installation

Работа в Ubuntu 18.04

0
Gorcer