Ошибки авторизации caching_sha2_password в MySQL 8.0: совместимость с PHP
- Ошибка
SQLSTATE[HY000] [2054] The server requested authentication method unknown to the clientв приложениях на PHP 7.x/8.0. - Сбои соединения в Legacy-коннекторах (
Authentication plugin 'caching_sha2_password' cannot be loaded). - Успешная авторизация через стандартный консольный клиент
mysql-cli, но отказ в сторонних CMS (WordPress, Bitrix, Drupal).
1. Проверка текущих плагинов аутентификации пользователей
SELECT user, host, plugin FROM mysql.user;2. Перевод конкретного пользователя на mysql_native_password
ALTER USER 'db_user'@'%' IDENTIFIED WITH mysql_native_password BY 'StrongPassword123!';
FLUSH PRIVILEGES;3. Глобальная смена дефолтного плагина в my.cnf (для новых пользователей)
В файле конфигурации /etc/mysql/my.cnf в секции [mysqld] добавьте:
[mysqld]
default_authentication_plugin = mysql_native_passwordПерезапустите СУБД:
systemctl restart mysqld4. Правильная настройка caching_sha2_password без понижения безопасности
Если требуется сохранить современный плагин caching_sha2_password, обновите драйвер PHP до pdo_mysql / mysqli с поддержкой OpenSSL и настройте безопасный транспорт:
[mysqld]
# Включение SSL для обмена ключами
require_secure_transport = ON Частые вопросы (FAQ)
Почему MySQL 8.0 перешел на caching_sha2_password по умолчанию?
Он использует алгоритм SHA-256 с солью, обеспечивая устойчивость к перехвату паролей по сети, а также кэширует хеши в памяти сервера для ускорения повторной аутентификации.
Удален ли mysql_native_password в MySQL 8.4 LTS?
В MySQL 8.4 плагин mysql_native_password отключен по умолчанию, но его можно включить параметром --mysql-native-password=ON для обратной совместимости.