Beim Eingeben von „mysql -u root –p“ in der Befehlszeile, beim Eingeben eines Passworts oder beim Herstellen einer Verbindung zur Datenbank über ein Tool wird meiner Meinung nach bei vielen Benutzern diese Fehlermeldung häufig angezeigt MySQL.
FEHLER 1045 (28000): Zugriff für Benutzer 'root'@'localhost' verweigert (mit Passwort: JA)
Stoppen Sie den MySQL-Dienst;
# windows net stop mysql # linux service mysqld stop
Ändern Sie die Konfigurationsdatei my.ini im MySQL-Installationsverzeichnis, um die Berechtigungsprüfung beim Anmelden zu überspringen.
#到mysql根目录找到mysql配置文件 vim my.ini #在my.ini,[mysqld]下添加一行,使其登录时跳过权限检查 skip_grant_tables
#登录mysql mysql -u root -p
Ändern Sie dann das Passwort des Root-Benutzers über SQL-Anweisungen.
#将数据库切换至mysql库 mysql> USE mysql; #修改密码 mysql> UPDATE user SET password=PASSWORD(‘newpasswd')WHERE user='root'; #刷新MySQL权限相关的表 mysql> flush privileges; mysql> exit;
4. Starten Sie den Dienst neu. Löschen Sie den Kommentar zum Überspringen oder fügen Sie einen #-Zeichen-Kommentar hinzu, der der Datei my.ini hinzugefügt wurde.
Ursachenanalyse
Verwenden Sie den Root-Benutzer, um sich bei MySQL anzumelden und überprüfen Sie die Benutzerinformationen in der Benutzertabelle wie folgt. Sie können feststellen, dass die Felder von Host % bzw. Localhost sind.
mysql>select host,user,password from user;
Dabei geht es um den Initialisierungsbenutzer, den anonymen Benutzer und die Verbindungsüberprüfungsstrategie während der MySQL-Installation.
Lassen Sie uns unten eine ausführliche Analyse durchführen.Bei der Installation von MySQL werden einige Benutzer standardmäßig initialisiert, z. B. der Root-Benutzer und Benutzer, deren Hostfeld „localhost“ lautet und deren Benutzerfeld leer ist. Ein Benutzer, dessen Benutzerfeld leer ist, ist ein anonymer Benutzer, und das Kennwort des Benutzers ist ebenfalls leer. Jeder kann sich mit einem anonymen Benutzer bei der MySQL-Datenbank anmelden, die Möglichkeiten sind jedoch begrenzt, z. B. die direkte Eingabe von MySQL Klicken Sie auf die Befehlszeile, um sich anzumelden. Sie können überprüfen, für welche Datenbanken der anonyme Benutzer Berechtigungen hat:
mysql>select current_user;
mysql>show databases;
Beim Versuch, eine Verbindung zu einer MySQL-Datenbank herzustellen, entscheidet die Datenbank anhand der bereitgestellten Identität und des bereitgestellten Passworts, ob die Verbindungsanfrage akzeptiert wird. Die Identität besteht aus zwei Teilen: dem Benutzernamen und dem Client-Host (d. h. dem Host, auf dem sich die Verbindung befindet). mysql-Befehl eingegeben wird). Da das % im Host-Feld mit jedem Host übereinstimmt oder das Host-Feld Platzhalter enthält, muss der Server entscheiden, welche der Daten in der Benutzertabelle abgeglichen werden soll, und den Host und den Host koppeln Benutzerfelder werden sortiert.
mysql>select host,user,password from user order by host desc,user desc;
Wenn das Benutzerfeld leer ist, bedeutet dies, dass es mit jedem Benutzer übereinstimmen kann.
Fokus hier:Benutzer ist leer, d. h. jeder Benutzer, der sich ohne Passwort bei localhost anmeldet, hat nur Berechtigungen für das Informationsschema und die Testdatenbanken. Bei Verwendung anderer Datenbanken schlägt dies fehl.
Wenn der Benutzer root ist und das Passwort leer angezeigt wird oder das Hostfeld als nicht „%“ angezeigt wird, wird die standardmäßige Übereinstimmungsreihenfolge befolgt, oder das Passwort ist falsch oder es wird FEHLER 1045 angezeigt aufgefordert werden.Das Bild unten wurde geändert und dient nur als Referenz. Wenn der Host beispielsweise localhost oder die Loopback-Adresse 127 ist, tritt ein Fehler 1045 auf.
SO Lösungmysql> select host,user,password from user order by host desc,user desc; ## 将排序序列中最前面的用户修改host为'%' mysql> update user set host = '%' where host = 'oracle' and user = 'root'; mysql> flush privileges;
Das obige ist der detaillierte Inhalt vonGründe für den MySQL-FEHLER 1045 und wie man ihn löst. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!