Возникла исключительная ситуация в драйвере: SQLSTATE [HY000] [2054] Сервер запросил метод аутентификации, неизвестный клиенту

Эта ошибка появляется в моем случае в PHP Symfony4 / PDO Doctrine с сервером MySql 8.0.13, когда я пытаюсь подключиться к базе данных:

An exception occurred in driver: SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
6
0
11 644
3

Ответы 3

Вы должны использовать устаревшие пароли для MySQL 8 и PHP7 +:

ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password BY 'password';

Я пытался получить ошибку 'root'@'127.0.0.1'. Но потом я попробовал 'root'@'localhost', и все заработало.

Jamshad Ahmad 12.09.2020 18:25

Итак, вот исправление. Вы можете создать пользователя со «старым» механизмом аутентификации, которого драйвер базы данных MySQL для PHP все еще ожидает.

CREATE USER 'ohdear_ci'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ohdear_secret';
GRANT ALL PRIVILEGES ON ohdear_ci.* TO 'ohdear_ci'@'localhost';

Если у вас уже есть существующий пользователь с разрешениями для баз данных, вы можете вместо этого изменить этого пользователя.

ALTER USER 'ohdear_ci'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ohdear_secret';

После этого ваш PHP-код может снова подключиться к MySQL 8.

Ссылка Ссылка

Вы можете установить директиву в конфигурации mysql:

[mysqld]
default_authentication_plugin=mysql_native_password

Пожалуйста, поясните, почему следует использовать это решение.

Xanlantos 03.01.2021 12:33

@Xanlantos, чтобы вам не приходилось указывать его каждый раз, когда вы создаете / обновляете пользователя с помощью mysql. Он будет установлен по умолчанию.

GregOs 04.01.2021 15:35

Другие вопросы по теме