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

после установки нового приложения laravel 5.7 и попытки переноса я получаю эту ошибку:

Illuminate\Database\QueryException : SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client (SQL: select * from information_schema.tables where table_schema = xxx_db and table_name = migrations)

at C:\xampp\htdocs\xxxxx\vendor\laravel\framework\src\Illuminate\Database\Connection.php:664 660| // If an exception occurs when attempting to run a query, we'll format the error 661| // message to include the bindings with SQL, which will make this exception a 662| // lot more helpful to the developer instead of just the database's errors. 663| catch (Exception $e) {

664| throw new QueryException( 665| $query, $this->prepareBindings($bindings), $e 666| ); 667| } 668|

Exception trace:

1 PDOException::("PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password]") C:\xampp\htdocs\xxxxx\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:70

2 PDO::__construct("mysql:host=127.0.0.1;port=3306;dbname=xxx_db ", "root", "**********", []) C:\xampp\htdocs\xxxxx\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:70

Please use the argument -v to see more details.

уже пробовал это решение, но не решил мою проблему.

medo ampir 04.12.2018 08:38
Стоит ли изучать 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 и хотите разрабатывать...
9
1
28 166
8

Ответы 8

Перейдите в ваш .env файл и убедитесь, что соединения DB_CONNECTION=mysql и БД правильные.

  1. Переустановил MySQL, выбрав устаревший метод аутентификации, как показано в прикрепленном к iamge Метод проверки подлинности SQL

  2. Параметры базы данных в .env следующие

    DB_CONNECTION=mysql  
    DB_HOST=127.0.0.1  
    DB_PORT=3306  
    DB_DATABASE=database_name  
    DB_USERNAME=database_username  
    DB_PASSWORD=database_password(if any)  
    
  3. Параметры базы данных в config / database.php

    'mysql' => [  
        'driver' => 'mysql',  
        'url' => env('DATABASE_URL'),  
        'host' => env('DB_HOST', '127.0.0.1'),  
        'port' => env('DB_PORT', '3306'),  
        'database' => env('DB_DATABASE', 'database_name'),  
        'username' => env('DB_USERNAME', 'database_username'),  
        'password' => env('DB_PASSWORD', 'database_password'),  
        'unix_socket' => env('DB_SOCKET', ''),  
        'charset' => 'utf8mb4',  
        'collation' => 'utf8mb4_unicode_ci',  
        'prefix' => '',  
        'prefix_indexes' => true,  
        'strict' => true,  
        'engine' => null,  
        'options' => extension_loaded('pdo_mysql') ? array_filter([  
            PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),  
        ]) : [],  
    ],  
    
  4. Запустите php artisan migrate из терминала проектов

Указав DB_SOCKET в файле .env, эту проблему можно решить следующим образом:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=8889
DB_DATABASE=my_db
DB_USERNAME=root
DB_PASSWORD=
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock

Не относится к моему случаю, но полезно знать, что в Laravel так просто настроить сокет! : O

Gucu112 03.06.2020 21:28

Этот запрос решил мою проблему.

 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root@123';

Работал у меня на Ubuntu 18.04.4 :)

Gucu112 03.06.2020 21:26

лучшее решение, чем переустановка mysql. ** обратите внимание на команду. Последний "корень" (... от 'root';) - это пароль, а не имя пользователя.

alvaropgl 27.11.2020 10:00

Работал у меня на macOS!

skcin7 23.01.2021 04:33

работал у меня на macOS для версии сервера: 8.0.21 - Homebrew. просто хочу отметить, что «some_password» также может быть вашим текущим рабочим паролем, нет необходимости устанавливать новый пароль.

Rohutech 08.02.2021 03:09

работал у меня на Windows Server с laravel 8

saber tabatabaee yazdi 09.02.2021 23:24

Вы можете запустить Mysql installer - Community (если вы работаете в Windows), а затем перенастроить mysql server для использования устаревшего метода аутентификации. это должно решить вашу проблему без боли.

Пожалуйста, проверьте порт локального хоста сервера в файле phpmyadmin и .env, например (3306,3307,8889)

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3307
DB_DATABASE=mydb
DB_USERNAME=root
DB_PASSWORD=masterpass
  1. Войдите в свой mysql как root и запустите этот запрос
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1234';

Вы можете изменить 1234 на свой пароль

  1. Выполните эти команды

php artisan config:clear

php artisan migrate

Примечание:, это сработало для меня.

К сожалению, вы меняете своего пользователя или пароль mysql. Если вы изменили пользователя / пароль, перейдите в файл .env и измените пользователя и пароль phpmyadmin. Дайте название вашей базе данных

DB_DATABASE=hrms
DB_USERNAME=username
DB_PASSWORD=password

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