mysql The server requested authentication method unknown to the client [caching_sha2_password] Ошибка решение

! ) Fatal error: Uncaught PDOException: PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password] in /var/www/SimpleMVC-example/vendor/it-for-free/simple-mvc/src/mvc/Model.php on line 68
( ! ) PDOException: PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password] in /var/www/SimpleMVC-example/vendor/it-for-free/simple-mvc/src/mvc/Model.php on line 68

К этому же может относится и ошибка при подключении в консоли:

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

Решение. Настраиваем подключение с обычным паролем

  1. Подключаемся в командной строке (или иным способом даем себе возможность выполнить SQL), например можно просто выполнить:
    sudo mysql

    -- это подключит нас под рутом.

  2. Далее есть два варианта:
    1. Или разрешить руту подключаться с паролем с указанного хоста (напр. с localhost):
      ALTER USER 'root'@'localhost' IDENTIFIED WITH 
             mysql_native_password BY 'PASSWORD';
      
      #
      

      -- где вместо PASSWORD укажите нужный вам пароль

    2. Или создать нового пользователя и разрешить подключаться уже ему:
      CREATE USER 'username'@'host' IDENTIFIED BY 'password';
      GRANT ALL PRIVILEGES ON * . * 
         TO 'username'@'host' WITH GRANT OPTION;
      

      -- где username host и password нужно заменить нужными вам значениями, например:

      CREATE USER 'coolusr'@'localhost' IDENTIFIED BY '12345';
      GRANT ALL PRIVILEGES ON * . * 
        TO 'coolusr'@'localhost' WITH GRANT OPTION;
      

      -- здесь мы создали пользователя coolusr c паролем 12345, дали ему права на все базы данных ( * . *), и разрешили подключаться с СУБД с хоста localhost

-- далее в своем приложении вы можете подключаться или от имени рута или от имени нового пользователя (смотря какой вариант выбрали).

Источник: https://evilinside.ru/mysql-8-0-the-serv...

Key Words for FKN + antitotal forum (CS VSU):

farberling_ti's picture

И выполняем команду:
ALTER USER root IDENTIFIED WITH BY 'PASSWORD';

Может понадобиться указать хост после root. Пример:

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

Если это не поможет, то поступить так:

  1. Зайти в mysql под рутом (как в шаге 1)
  2. Создать нового пользователя и наделить его root-правами, впоследствии заходить под его профилем:
    CREATE USER 'username'@'host' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON * . *
        TO 'username'@'host' WITH GRANT OPTION;
    
vedro-compota's picture

благодарю, обновил основную инструкцию

_____________
матфак вгу и остальная классика =)

farberling_ti's picture

Если не поможет, то можно еще в конфигах mysqql (/etc/mysql/my.cnf) прописать:

[mysqld]
default-authentication-plugin=mysql_native_password
Firons's picture

ERROR 1449 (HY000): The user specified as a definer ('mysql.infoschema'@'localhost') does not exist