У матеріалі розбирається підхід Ayesh Karunaratne до того, як адаптувати PHP-додатки до змін аутентифікації в MySQL 8.4 і новіших версіях.
Що змінилося в MySQL 8.4 і чому зламалися PHP-підключення
У MySQL 8.4 плагін аутентифікації mysql_native_password більше не завантажується за замовчуванням. А в MySQL 9.0 його взагалі прибрали з сервера.
Багато PHP-додатків (через PDO або MySQLi) досі використовують користувачів, створених з плагіном mysql_native_password. Коли такий користувач намагається підключитися до MySQL 8.4+, сервер повертає помилку, а PHP показує її у винятку.
Для PDO це виглядає так:
SQLSTATE[HY000] [1524] Plugin 'mysql_native_password' is not loaded
Для MySQLi — так:
mysqli_sql_exception Plugin 'mysql_native_password' is not loaded.
У версіях MySQL 8.0.34 — 8.3 використання mysql_native_password ще працювало, але сервер писав у лог попередження про застарілість плагіна:
[Warning] [MY-013360] [Server] Plugin mysql_native_password reported: ''mysql_native_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead'
У MySQL 8.4 плагін просто не завантажується, а в MySQL 9.0 взагалі видалений. Саме тому з'являється помилка «Plugin 'mysql_native_password' is not loaded».
PHP уміє працювати з сучасним плагіном caching_sha2_password, починаючи з PHP 7.4. Тому базове рішення — перевести користувачів з mysql_native_password на caching_sha2_password.
Крок 1. Знайти користувачів з mysql_native_password
Спочатку варто подивитися, які саме акаунти MySQL ще використовують застарілий плагін. Це допоможе не змінювати зайвих користувачів і не ламати сторонні інтеграції.
У консолі MySQL виконайте запит до системної таблиці mysql.user:
SELECT user, host, plugin from mysql.user WHERE plugin='mysql_native_password';
Цей запит поверне список усіх користувачів (поле user) та хостів (host), в яких поле plugin встановлене в mysql_native_password.

Якщо результат порожній — помилка, швидше за все, стосується не цього плагіна або користувач уже змінений. Якщо є рядки — саме ці акаунти і викликають проблему під час підключення PHP та інших застосунків.
Крок 2. Перевести користувачів на caching_sha2_password
Рекомендований шлях, який описує автор, — для кожного користувача з mysql_native_password змінити плагін на caching_sha2_password. Це працює, починаючи з PHP 7.4, де реалізована підтримка цього механізму аутентифікації.
Маючи достатні привілеї в MySQL (наприклад, ALTER USER або ALL PRIVILEGES), для кожного такого користувача виконайте:
<USERNAME>— ім'я користувача MySQL;<HOST>— значення з колонкиhost(частоlocalhost, але може бути IP або шаблон типу%);<PASSWORD>— фактичний пароль, який повинен використовуватися для цього користувача.
Після виконання ALTER USER MySQL оновлює спосіб аутентифікації користувача. Підключення PHP через PDO/MySQLi будуть проходити вже з використанням caching_sha2_password, якщо версія PHP не старіша за 7.4 і розширення MySQL зібрані зі звичайною підтримкою MySQL 8.
![How to fix the SQLSTATE[HY000] [1524] Plugin mysql_native_password is not loaded errors caused in MySQL 8.4 no longer enabling the mysql_native_password plugin by default](https://pontyk.com.ua/wp-content/uploads/2026/11/aca-4f779f8a956d207cc9b2.png)
Коли таке оновлення може бути проблемним
- Якщо додаток працює на PHP 7.3 або старшій версії, де
caching_sha2_passwordще не підтримується. - Якщо ті самі MySQL-користувачі використовуються іншими клієнтами або бібліотеками, які не вміють працювати з
caching_sha2_password. - Якщо пароль користувача невідомий і зберігався тільки всередині MySQL (тоді під час
ALTER USER ... BY '<PASSWORD>'вам доведеться встановити новий пароль і оновити його в усіх застосунках).
У цих випадках автор розглядає тимчасовий обхідний варіант — знову ввімкнути mysql_native_password на MySQL 8.4.
Крок 3. Тимчасово ввімкнути mysql_native_password у MySQL 8.4
MySQL 8.4 більше не вмикає mysql_native_password за замовчуванням, але плагін ще є в дистрибутиві й його можна вручну активувати через конфігурацію сервера. Автор вказує, що це не рекомендований шлях, окрім випадків, коли немає можливості перейти на PHP 7.4+ або оновити клієнти.
Офіційна документація MySQL щодо цього плагіна доступна за посиланням з оригінального матеріалу: https://dev.mysql.com/doc/refman/8.4/en/native-pluggable-authentication.html.
Щоб увімкнути mysql_native_password у MySQL 8.4, потрібно додати параметр у конфігураційний файл сервера в секцію [mysqld] і перезапустити службу MySQL.
На Debian/Ubuntu-форках MySQL конфігураційні файли зазвичай розташовані в каталозі /etc/mysql/. Автор рекомендує не правити основний файл, а створити окремий, наприклад /etc/mysql/conf.d/enable-mysql-native-password.cnf, і додати туди такі рядки:
Після перезапуску MySQL (через systemctl, service або інший механізм залежно від ОС) плагін mysql_native_password буде активний, й існуючі користувачі з цим плагіном знову зможуть підключатися.
Важливе обмеження для MySQL 9.0
У MySQL 9.0 плагін mysql_native_password повністю видалили. Це означає:
- Активувати його через конфігурацію, як у прикладі вище, вже не можна.
- Спроба прописати
mysql_native_password=ONв конфігах призведе до помилки при старті MySQL, оскільки параметр стане недійсним. - Єдиний робочий підхід для MySQL 9.0 — перевести користувачів на підтримуваний плагін, наприклад
caching_sha2_password, і оновити клієнтів (PHP, драйвери тощо), щоб вони могли з ним працювати.
Як обрати стратегію для свого проєкту
З огляду на описаний підхід, практична логіка така:
- Якщо ви використовуєте PHP 7.4 або новішу версію — безпечніше і перспективніше одразу переводити користувачів MySQL на
caching_sha2_passwordчерезALTER USER. Це захищає від повного видаленняmysql_native_passwordу 9.0. - Якщо ви тимчасово «застрягли» на PHP 7.3 і старіше — можливий обхід через активацію
mysql_native_passwordу MySQL 8.4, але це варто сприймати як тимчасове рішення до оновлення PHP. Для MySQL 9.0 цей варіант уже не працює. - Перед масовою зміною користувачів має сенс перевірити, чи не використовують ті самі облікові записи старі клієнти або сторонні системи без підтримки
caching_sha2_password.
Ключовий технічний висновок з матеріалу автора: помилка «Plugin 'mysql_native_password' is not loaded» у MySQL 8.4+ не є проблемою PHP-коду — вона пов'язана з налаштуванням користувачів і плагінів аутентифікації на сервері MySQL. Виправляти її потрібно або через переведення користувачів на caching_sha2_password, або, для старих стеків лише на MySQL 8.4, через явне ввімкнення mysql_native_password в конфігурації.
Джерело: Ayesh Karunaratne — PHP.Watch: статьи