Php выдает ошибку [caching_sha2_password] для экземпляра RDS Mysql, даже если метод аутентификации - mysql_native_password - PullRequest
1 голос
/ 30 апреля 2020

При попытке подключиться к моему MySQL экземпляру через PHPMyAdmin он выдает mysqli :: real_connect (): сервер запросил метод аутентификации, неизвестный клиенту [caching_sha2_password] и mysqli :: real_connect (): (HY000 / 2054): сервер запросил метод аутентификации, неизвестный клиенту

Теперь вот проблема:

  1. Мой метод аутентификации по умолчанию НЕ caching_sha2_password , но, как проверено в файле my.cnf. , он уже mysql_native_password
  2. Как предлагалось во многих других решениях, я также попробовал 'ALTER USER' myuser '@' rds-endpoint 'ИДЕНТИФИЦИРОВАНО С mysql_native_password BY' newpassword '; - По-прежнему нет результата. (Я думаю, потому что это уже mysql_native_password)
  3. Я также пытался создать нового пользователя, безрезультатно.
  4. Многие отмечали, что это проблема для MySQL 8.x, которая поддерживает caching_sha2_password как новая аутентификация. Я пробовал несколько комбинаций - MYSQL 7.x вплоть до 5.x как мои экземпляры RDS. Все они выдают одну и ту же ошибку
  5. Во многих местах упоминалось, что проблема исправляется с помощью PHP 7.x (точнее, PHP 7.4.x). Я тоже это пробовал - PHP 4.x до 7.x - Все та же ошибка.
  6. Оставляя AWS RDS вне изображения, я также пытался установить до нового user@localhost и подключения его через PhpMyAdmin - , даже в этом случае он выдает ту же ошибку.
  7. Также хотел бы отметить - проблема определенно не с RDS - просто подключение к БД с консоли через mysql -h (или localhost) -u -p отлично работает.
  8. PHP config. php:
    /* Authentication type */
    $cfg['Servers'][$i]['auth_type'] = 'config';
    /* Server parameters */
    $cfg['Servers'][$i]['host'] = '*<RDS ENDPOINT>*.amazonaws.com';
    $cfg['Servers'][$i]['compress'] = false;
    $cfg['Servers'][$i]['AllowNoPassword'] = false;
    $cfg['Servers'][$i]['user'] = '<username>';
    $cfg['Servers'][$i]['password'] = '<password>';
    $cfg['Servers'][$i]['verbose'] = '<username>';
    $cfg['Servers'][$i]['connect_type'] = 'tcp';
    $cfg['Servers'][$i]['extension'] = 'mysqli';
...