





Вы должны использовать устаревшие пароли для MySQL 8 и PHP7 +:
ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password BY 'password';
Итак, вот исправление. Вы можете создать пользователя со «старым» механизмом аутентификации, которого драйвер базы данных MySQL для PHP все еще ожидает.
CREATE USER 'ohdear_ci'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ohdear_secret';
GRANT ALL PRIVILEGES ON ohdear_ci.* TO 'ohdear_ci'@'localhost';
Если у вас уже есть существующий пользователь с разрешениями для баз данных, вы можете вместо этого изменить этого пользователя.
ALTER USER 'ohdear_ci'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ohdear_secret';
После этого ваш PHP-код может снова подключиться к MySQL 8.
Вы можете установить директиву в конфигурации mysql:
[mysqld]
default_authentication_plugin=mysql_native_password
Пожалуйста, поясните, почему следует использовать это решение.
@Xanlantos, чтобы вам не приходилось указывать его каждый раз, когда вы создаете / обновляете пользователя с помощью mysql. Он будет установлен по умолчанию.
Я пытался получить ошибку
'root'@'127.0.0.1'. Но потом я попробовал'root'@'localhost', и все заработало.