PHP с MySQL 8. Ошибка 0+: сервер запросил неизвестный клиенту метод аутентификации
Я использую MySQL версии 8 на PHP 7.0.
Я получаю следующую ошибку при попытке подключиться к моей базе данных из PHP:
Ошибка подключения: SQLSTATE [HY000] [2054] Сервер запросил метод проверки подлинности, неизвестный клиенту
PHP может показать эту ошибку
Предупреждение: mysqli_connect(): сервер запросил неизвестный клиенту метод аутентификации [caching_sha2_password] в D:\xampp\htdocs\reg\server.php в строке 10
Как я могу решить эту проблему?
Ответы
Ответ 1
@mohammed, это обычно связано с плагином аутентификации, который использует ваша база данных mysql.
По умолчанию и по какой-то причине плагином mysql 8 по умолчанию является auth_socket. В большинстве случаев приложения ожидают входа в вашу базу данных с использованием пароля.
Если вы еще не изменили свой подключаемый модуль аутентификации по умолчанию в MySQL, вы можете сделать это:
1. Войдите как root в mysql.
2. Запустите команду sql:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password
BY 'password';
Замените "пароль" вашим корневым паролем. Если ваше приложение не входит в вашу базу данных с пользователем root, замените пользователя 'root' в приведенной выше команде на пользователя, которого использует ваше приложение.
Цифровой океан объясняет это здесь подробнее Установка Mysql
Ответ 2
Вы должны изменить настройки MySQL. Отредактируйте файл my.cnf и поместите этот параметр в раздел mysqld:
[mysqld]
default_authentication_plugin= mysql_native_password
Затем выполните следующую команду:
FLUSH PRIVILEGES;
Приведенная выше команда внесет изменения механизма аутентификации по умолчанию.
Ответ 3
Я пробовал много способов, но только эта работа для меня
спасибо за обходной путь
проверьте ваш **. env
MYSQL_VERSION=latest
затем введите эту команду
$ docker-compose exec mysql bash
$ mysql -u root -p
(войдите как root)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
ALTER USER 'default'@'%' IDENTIFIED WITH mysql_native_password BY 'secret';
затем зайдите в phpmyadmin и войдите как:
- хост → MySQL
- пользователь → root
- пароль → root
надеюсь, это поможет
Ответ 4
Столкнувшись с той же проблемой, я не смог запустить Docker-контейнер WordPress с MySQL версии 8, поскольку его механизм аутентификации по умолчанию - caching_sha2_password вместо mysql_native_password.
Чтобы решить эту проблему, мы должны сбросить механизм аутентификации по умолчанию на mysql_native_password.
Найдите файл my.cnf в вашей установке mysql, обычно на машине с Linux он находится по следующему адресу -/etc/mysql
Отредактируйте файл my.cnf и добавьте следующую строку под заголовком [mysqld]
default_authentication_plugin = mysql_native_password
Сохраните файл и войдите в командную строку mysql, используя пользователя root
запустить команду FLUSH PRIVILEGES;
Ответ 5
Ни один из ответов здесь не работал для меня. Что мне нужно было сделать, это:
- Перезапустите установщик.
- Выберите быстрое действие "переконфигурировать" рядом с продуктом "MySQL Server".
- Перейдите к параметрам, пока не дойдете до метода аутентификации, и выберите "Использовать устаревший метод аутентификации".
После этого все работает нормально.
Ответ 6
Я использую Laravel Lumen для создания небольшого приложения.
Для меня это было потому, что я не определил DB_USERNAME в моем файле .env.
DB_USERNAME=root
Установка это решило мою проблему.
Ответ 7
В файле my.cnf проверьте ниже 2 шага.
-
проверьте это значение -
old_passwords = 0;
это должно быть 0.
-
проверьте это also-
[mysqld] default_authentication_plugin = mysql_native_password Еще одно значение, чтобы проверить, чтобы убедиться,
Секция [mysqld] должна быть такой.
Ответ 8
preferences -> mysql -> initialize database -> use legacy password encryption(instead of strong) -> entered same password
как мой файл config.inc.php, перезапустил сервер apache и все заработало. Я все еще с подозрением относился к этому, поэтому я остановил сервер apache и mysql и запустил их снова, и теперь он работает.
Ответ 9
проверьте имя пользователя и пароль сервера sql, если ваш запуск xampp или wampp проверяет имя пользователя и пароль phpmyadmin