Ошибка MySQL: mysql "ERROR 1524 (HY000): плагин" auth_socket "не загружен"
Моя локальная среда:
Когда я попытался войти в MySQL (через CLI):
mysql -u root -p
Я столкнулся с циклической проблемой с тремя шагами.
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!
Решение: reset пароль root с помощью этого руководства.
При правильном пароле и рабочем гнезде появляется последняя ошибка.
3) Неверный плагин auth
mysql "ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded"
Здесь я остановился или как-то добрался до 1) снова.
Ответы
Ответ 1
Я получил решение!
При сбросе пароля 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. Проблема с сокетом (из ваших комментариев)
Когда вы видите ошибку сокета, сообщество приходит с двумя возможными решениями:
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
(спасибо @Петру Двухреченскому)
Слепые пути и возможные краевые ошибки
Используйте 127.0.0.1 вместо localhost
mysql -uroot # "-hlocalhost" is default
Может привести к "отсутствующему файлу" или ошибке slt.
mysql -uroot -h127.0.0.1
Работает лучше.
Пропустить вопрос сокета
Я нашел много способов создания файла mysqld.sock
, изменения прав доступа или ссылки на него. Это не было проблемой в конце концов.
Пропустить файл my.cnf
Вопрос также не был там. Если вы не уверены, это может вам помочь.
Ответ 2
Вы можете попробовать следующим образом это работает для меня.
Запустить сервер:
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 &
Начальная оболочка mysql:
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
сделанный!
NB, After login please change the password again from phpmyadmin
Теперь проверьте hostname/phpmyadmin
Username: root
Password: 123456
Для более подробной информации, пожалуйста, проверьте Как сбросить забытый пароль phpmyadmin в Ubuntu
Ответ 3
Вы можете попробовать эти несколько шагов:
Остановите Mysql Сервис 1-й 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 Если вы все еще сталкиваетесь с ошибкой, вы должны посетить: Сброс пароля root MySQL 5.7 Ubuntu 16.04
Ответ 4
Команда mysql
по умолчанию использует сокеты UNIX для подключения к MySQL.
Если вы используете MariaDB, вам нужно загрузить плагин Unix Socket Authentication на стороне сервера.
Вы можете сделать это, отредактировав конфигурацию [mysqld]
следующим образом:
[mysqld]
plugin-load-add = auth_socket.so
В зависимости от дистрибутива, файл конфигурации обычно находится в /etc/mysql/
или /usr/local/etc/mysql/
Ответ 5
Для Ubuntu 18.04 и MySQL 5.7
-
шаг 1: sudo mkdir/var/run/mysqld;
шаг 2: sudo chown mysql/var/run/mysqld
шаг 3: sudo mysqld_safe --skip-grant-tables & quit (используйте quit, если он застрял)
войти в MySQL без пароля
-
шаг 4: sudo mysql --user = root mysql
шаг 5: ВЫБЕРИТЕ пользователя, authentication_string, плагин, хост FROM mysql.user;
Шаг 6: ИЗМЕНИТЕ ПОЛЬЗОВАТЕЛЯ 'root' @'localhost', ИДЕНТИФИЦИРОВАНО С mysql_native_password BY 'root'
сейчас войдите с
Ответ 6
Попробуйте это: sudo mysql_secure_installation
Работа в Ubuntu 18.04
Ответ 7
Вы можете попробовать с помощью следующих команд:
[email protected]:~$ sudo /etc/init.d/mysql stop
[ ok ] Stopping mysql (via systemctl): mysql.service.
[email protected]:~$ sudo /etc/init.d/mysql start
[ ok ] Starting mysql (via systemctl): mysql.service.