Недавно я создал проект Laravel. Когда база данных MySQL настроена на выполнение запроса, на странице отображается следующая ошибка:
SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client (SQL: select * from user where id = 3) Previous exceptions
(1) Раньше плагином аутентификации по паролю для MySQL был «mysql_native_password».
(2) Когда MySQL достигает версии 8.0 или выше, плагин аутентификации по паролю использует «caching_sha2_password». Однако многие инструменты баз данных и пакеты ссылок в настоящее время не поддерживают это.
Измените метод аутентификации по паролю и верните его на плагин аутентификации «mysql_native_password».
(1) Сначала отредактируйте файл конфигурации mysql. Поскольку я использую компьютер Mac, этот файл конфигурации по умолчанию не существует после установки. Выполните следующую команду, чтобы добавить файл конфигурации:
1 | sudo vi /etc/my.cnf |
---|
(2) Нажмите i, чтобы войти в режим редактирования, и добавьте следующий контент (измените режим шифрования на старый):
1 2 | [mysqld] default_authentication_plugin=mysql_native_password |
---|
(3) Наконец нажмите esc, чтобы выйти из режима редактирования. Затем нажмите Shift + :, чтобы открыть команду, затем введите wq и нажмите Enter, сохраните и выйдите.
(4) Поскольку первоначально созданные пользователи (например, root) по-прежнему используют новый метод проверки, нам все равно необходимо изменить их на старый. Сначала подключитесь к базе данных с помощью командной строки:
1 | mysql -u root -p |
---|
(5) После входа в систему последовательно выполните следующие три команды (измените часть пароля в зависимости от ситуации):
1 2 3 | ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ 'root'@'localhost' ИДЕНТИФИЦИРОВАННОГО ПО 'пароль' ПАРОЛЮ, СРОК ДЕЙСТВИЯ НИКОГДА; ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ 'root'@'localhost' ИДЕНТИФИЦИРОВАННОГО С помощью mysql_native_password BY 'пароль'; УДАЛЕНИЕ ПРИВИЛЕГИЙ; |
---|
(6) После завершения перезапустите службу MySQL, и вы обнаружите, что PHP может успешно подключиться к базе данных.
Мой блог скоро будет синхронизирован с сообществом разработчиков Tencent Cloud, и приглашаю всех присоединиться: https://cloud.tencent.com/developer/support-plan?invite_code=3cn0udci9ym88.