С такой ошибкой мы можем столкнуться не только при попытке входа в phpmyadmin под root, но и при иных запросах(например из php скриптов), которые требуется делать от root. Если мы не перепутали пароль, дело по всей вероятности в том, что root пользователь настроен для авторизации через плагин unix_socket. Войдем в консоль mysql от root и проверим, так ли это:
1 2 | USE mysql; SELECT User, Host, plugin FROM mysql.user; |
Если напротив root мы видим unix_socket или auth_socket значит причина именно в этом. Есть несколько вариантов решения.
Можно установить пустое значение для поля plugin либо установить значение mysql_native_password
1 2 3 4 | USE mysql; UPDATE user SET plugin='mysql_native_password' WHERE User='root'; FLUSH PRIVILEGES; exit; |
можно сделать тоже самое с одновременной установкой нового root пароля:
1 | mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';" |
либо можно создать для наших целей другого пользователя со всеми привилегиями для всех баз:
1 2 3 4 5 6 | USE mysql; CREATE USER 'YOUR_USER'@'localhost' IDENTIFIED BY 'USER_PASSWORD'; GRANT ALL PRIVILEGES ON *.* TO 'YOUR_USER'@'localhost'; UPDATE user SET plugin='' WHERE User='YOUR_USER'; FLUSH PRIVILEGES; exit; |
после любых из перечисленных выше манипуляций, не забываем перезапустить mysql
1 | systemctl restart mysql |