Я видел это раньше, когда один пользователь mysql входит в систему через php, а другой - нет. Иногда пользователь даже работает из командной строки, но не из php.
Эмиль всегда говорил о двух. Пользователь mysql - это действительно пара пользователь / хост. таким образом, пользователь megadots @ localhost и пользователь megadots @ mycoolhost указаны в таблице mysql.user как две отдельные записи.
Если вы можете войти в систему из командной строки, выполните этот запрос.
SELECT user, host FROM mysql.user
вы должны увидеть полный список пользователей и их хостов.
если вы узнаете работающего пользователя phpMyAdmin, посмотрите на столбец хоста, который, вероятно, является хостом, который вы хотите использовать.
для сброса хоста выполните эти запросы (будьте осторожны при работе с таблицей привилегий для всей установки mysql)
update mysql.user set host = 'hostname'
where user = 'username' and host = 'oldhostname';
flush privileges;
Если вы видите запись с именем пользователя и% в качестве хоста, который будет иметь приоритет над всем остальным, если для пользователя существует несколько записей и% в качестве хоста для одной из них, возможно, что имя пользователя с% как на хосте указан неверный пароль, и независимо от того, сколько раз вы сбрасываете пароль username @ localhost, он недействителен, поскольку при входе в систему он будет сравниваться с username @%.