Ich habe das schon mal gesehen, wo sich ein MySQL-Benutzer über PHP anmeldet und ein anderer nicht. Manchmal arbeitet der Benutzer sogar von der Kommandozeile, aber nicht von PHP.
Es war schon immer das, was Emil zwei sagt. Ein mysql-Benutzer ist wirklich ein Benutzer/Host-Paar. Die Benutzer megadots @ localhost und die Benutzer megadots @ mycoolhost werden in der Tabelle mysql.user als zwei separate Datensätze aufgelistet.
Wenn Sie über die Befehlszeile anmelden können, führen Sie diese Abfrage aus.
SELECT user, host FROM mysql.user
sollten Sie die vollständige Liste der Benutzer und deren Hosts sehen.
Wenn Sie den phpMyAdmin-Benutzer erkennen, der funktioniert, sehen Sie sich die Hostspalte an, die wahrscheinlich der Host ist, den Sie verwenden möchten.
die Host zurückgesetzt wird diese Abfragen ausgeführt werden (dies zu tun vorsichtig sein, Ihre für die gesamte MySQL-Installation mit dem privilages Arbeitstisch)
update mysql.user set host = 'hostname'
where user = 'username' and host = 'oldhostname';
flush privileges;
Wenn Sie einen Datensatz mit dem Benutzername und% als Gastgeber zu sehen, dass hat Vorrang vor allem anderen, wenn es mehrere Datensätze für den Benutzer und% als Host für einen von ihnen gibt, ist es möglich, dass der Benutzername mit% als Host das falsche Passwort hat und egal wie oft Sie das Passwort von username @ localhost zurücksetzen Es ist ungültig, weil es mit Benutzernamen @% bei der Anmeldung verglichen wird.
Wie haben Sie das Privileg gewährt? Das Problem ist in diesem Fall nicht der PHP-Code, sondern das mysql-Ende. Die connect-Anweisung ist korrekt. –