FEHLER 1045 (28000): Zugriff für Benutzer „root“@„localhost“ verweigert (mit Passwort: NEIN)

FEHLER 1045 (28000): Zugriff für Benutzer „root“@„localhost“ verweigert (mit Passwort: NEIN)

Also erhielt ich diesen Fehler zuerst, als ich versuchte, Datenbanken zur Verwendung in phpmyadmin zu erstellen.ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

Ich habe an mehreren Stellen nachgesehen und ein Kumpel von mir sagte mir, ich solle einfach versuchen, MySQL neu zu installieren, da ich den Server erst gestern neu installiert habe.

Daher habe ich beschlossen, MySQL neu zu installieren. Nun kann ich nicht einmal das Installationsprogramm ausführen, ohne diesen Fehler zu erhalten:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Ich habe den 'root'@'localhost'Fehler auch erhalten, als ich versuchte, ein Skript mit der von mir erstellten Datenbank zu installieren. Dies ist der Fehler, den ich beim Versuch, das Skript zu installieren, erhalte: Ausführen von Centos 6

Bildbeschreibung hier eingeben

PHP 5.3.3 (das Skript, das ich verwende, ist Ioncubed und PHP 5.4, das brauche ich nicht).

BEARBEITEN:

Wenn Sie fragen, warum ich mich nicht erst einmal umschaue, ich habe mich umgesehen! Ich habe kein Glück, andere zu finden, die das gleiche Problem hatten wie ich.

BEARBEITEN 2:

Ich habe MySQL jetzt erfolgreich installiert. Ich wollte zurückgehen und es noch einmal versuchen, aber das Installationsprogramm funktionierte einwandfrei. Aber ich erhalte immer noch den root@localhost-Fehler, der im obigen Bild angezeigt wird. Ich habe bereits überprüft, ob die Konfiguration nicht auf magische Weise „root“@„localhost“ verwendet.

Antwort1

Die Konfiguration der Datenbank verwendet root@localhost und dieses Passwort wurde bei der ersten Installation gewählt. Es ist nicht das Root-Passwort des Systems. MySQL-Root und System-Root sind unterschiedliche Konten mit möglicherweise unterschiedlichen Passwörtern.

Versuchen Sie, sich zu erinnern, und versuchen Sie, es zu erraten, indem Sie mysql -u root -pes versuchen. Wenn Sie dabei keinen Erfolg haben, suchen Sie bei Google nach einer Anleitung zum Entfernen der MySQL-Konfiguration und beginnen Sie von vorne.

Antwort2

MySQL behandelt "localhost" und "127.0.0.1" unterschiedlich; ersteres wird verwendet, um eine Unix-Socket-Verbindung /var/lib/mysql/mysql.sockoder etwas anderes auszuführen. Sie benötigen also zwei verschiedene GRANTAnweisungen in Ihrer mysql.userTabelle (zumindest bei mir unter OpenSuSE Linux; unter Windows kann es beispielsweise anders sein):

(MySQL-Verbindung als Root)

GRANT ALL PRIVILEGES (*or privilege list*) ON yourdb.* TO user@localhost IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES (*or privilege list*) ON yourdb.* TO [email protected] IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

Dann ist es offensichtlich, dass Ihr Skript tatsächlich versucht, als "root@localhost" zu installieren. Wenn Sie das Skript oder die Installationskonfiguration nicht bearbeiten können, können Sie dies durcharbeiten, indem SievorübergehendRoot-Passwort deaktivieren:

USE mysql;
UPDATE user SET Password = NULL WHERE User='root' AND Host='localhost';
FLUSH PRIVILEGES;

...für mehr Sicherheit,Melden Sie sich nicht von MySQL abnachdem Sie dies getan haben. Nachdem die Installation abgeschlossen ist, müssen Sie das Root-Passwort zurücksetzen:

GRANT ALL PRIVILEGES ON mysql.* TO root@localhost IDENTIFIED BY 'newpassword';
FLUSH PRIVILEGES;

Dies löst nicht das Problem derwas macht das Skript nach der Installation. Die Chancen stehen gut, dass esTrotzdemverwenden Sie root auf localhost undTrotzdemkein Passwort verwenden. Sobald Sie also das Passwort zurücksetzen, funktioniert es nicht mehr. Sie müssen in der Konfiguration des Skripts Verweise auf root und localhost finden (sie können separat angegeben werden): Es muss etwas wie

user = root
host = localhost
dbname = somedb

oder vielleicht

'username' => 'root',
"hostaddr" => "localhost",
...

und ändern Sie sie. Sie können einen neuen Benutzer in MySQL erstellen, indem Sie einfach eine neue GRANTAnweisung eingeben.

Antwort3

Im NormalfallPaketüberflussist hilfreich. Im Falle eines Konflikts zwischen verschiedenen Versionen kann das Passwort jedoch nicht erfolgreich zurückgesetzt werden. Installieren Sie in diesem Fall MySQL erneut.Das ist, was ich erlebe!!

Hier sind die Schritte: 1) Suchen Sie das installierte MySQL
# rpm -qa|grep mysql

2) Entfernen Sie mysql
#rpm -e 'das Programm'

3) Löschen Sie die Bibliothek und den Include
#rm -rf /usr/lib/mysql
#rm -rf /usr/include/mysql

4) Löschen Sie die MySQL-Daten oder sichern Sie sie.
#mv /var/lib/mysql ~/mysql_backup

5) MySQL neu installieren
#yum install mysql mysql-server

6) Starten Sie den MySQL-Dienst und probieren Sie ihn aus:
#chkconfig mysqld on
#service mysqld start
#mysql -uroot -p
– Wenn die Installation in diesem Schritt erfolgreich war, sollte das Kennwort null sein. Drücken Sie einfach die Eingabetaste und gelangen Sie in die MySQL-Datenbank.

verwandte Informationen