PHP 7.2.8

Очередные заметки на полях, вдруг кому-то пригодится. Если вы столкнулись с ошибкой:

Fatal error: Uncaught PDOException: PDO::__construct(): Unexpected server respose while doing caching_sha2 auth: 109 in …

Кстати да, в самом тексте тоже ошибка, слово response написано без буквы n — ошибка в ошибке, так сказать.

Так вот, если вы встретились с такой ошибкой, то чинится это таким вот вариантом:

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'your password';
ALTER USER 'root'@'%' IDENTIFIED WITH caching_sha2_password BY 'your password';

Но при таком раскладе получается что вы закрываете доступ к тому же MySQL Workbench, который будет ругаться ошибкой:

Cannot Connect to Database Server
Your connection attempt failed for user ‘user’ from your host to server at 1хх.ххх.ххх.хх9:3306:

Authentication plugin ‘caching_sha2_password’ cannot be loaded: dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): image not found

Я вышел из ситуации создав отдельно пользователя для скриптов и отдельно пользователя для доступа через СУБД.

ALTER USER 'user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
CREATE USER 'user'@'1xx.xxx.xxx.xx7' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'user'@'1xx.xxx.xxx.xx7';
ALTER USER 'user'@'1xx.xxx.xxx.xx7' IDENTIFIED WITH caching_sha2_password BY 'password';
FLUSH PRIVILEGES;

Понятное дело что для безопасности не все привелегии выдаются, чисто из экономии кода. Главное понятен смысл. Для воркбенча используется mysql_native_password, для PDO используется caching_sha2_password.

Вот как-то так.

Если знаете способы лучше — напишите в комментарии, пожалуйста.