it-swarm.com.de

FEHLER 1045 (28000): Zugriff für Benutzer 'root' @ 'localhost' verweigert (mit Kennwort: YES)

Ich bin eine Elektrotechnik, die hauptsächlich mit der Stromversorgung arbeitet, anstatt zu programmieren. Vor kurzem habe ich ein Handbuch zur Installation einer Software-Suite unter Ubuntu befolgt. Ich habe überhaupt keine Kenntnis von mySQL. Ich habe die folgenden Installationen auf meinem Ubuntu gemacht.

Sudo apt-get update
Sudo apt-get install mysql-server-5.5
Sudo apt-get install mysql-client-5.5
Sudo apt-get install mysql-common
Sudo apt-get install glade
Sudo apt-get install ntp

Dann mach ich

[email protected]:~/Desktop/iPDC-v1.3.1/DBServer-1.1$ mysql -uroot -proot <"Db.sql"

Ich habe am Ende die folgende Fehlermeldung erhalten.

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Wie kann ich das Problem beheben und fortfahren?

129
Sibbs Gambling

Anmerkung: Für MySQL 5.7+ siehe Antwort von @Lahiru auf diese Frage. Das enthält aktuellere Informationen.

Für MySQL <5,7:

Das Standard-Root-Passwort ist leer (d. H. Leere Zeichenfolge), nicht root. Sie können sich also einfach einloggen als:

mysql -u root

Sie sollten natürlich Ihr Root-Passwort nach der Installation ändern

mysqladmin -u root password [newpassword]

In den meisten Fällen sollten Sie auch einzelne Benutzerkonten einrichten, bevor Sie intensiv mit der Datenbank arbeiten.

119
Mike Brant

Ich konnte dieses Problem durch Ausführen dieser Anweisung lösen

Sudo dpkg-reconfigure mysql-server-5.5

Dadurch wird das root-Passwort geändert.

111
Divz

Sie müssen das Passwort zurücksetzen! Schritte für Mac OSX (getestet und funktionieren) und Ubuntu

Beenden Sie MySQL mit

Sudo service mysql stop

oder

$ Sudo /usr/local/mysql/support-files/mysql.server stop

Starten Sie es im abgesicherten Modus:

$ Sudo mysqld_safe --skip-grant-tables --skip-networking

(über der Zeile steht der ganze Befehl)

Dies ist ein fortlaufender Befehl, bis der Prozess abgeschlossen ist. Öffnen Sie ein weiteres Shell/Terminal-Fenster und melden Sie sich ohne Kennwort an:

$ mysql -u root

mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';

Laut dem Kommentar von @ IberoMedia heißt das Feld für neuere Versionen von MySQL authentication_string:

mysql> UPDATE mysql.user SET authentication_string =PASSWORD('password') WHERE User='root';

Starten Sie MySQL mit:

Sudo service mysql start

oder

Sudo /usr/local/mysql/support-files/mysql.server start

ihr neues Passwort lautet 'Passwort'.

57
tk_

wenn das Problem weiterhin besteht, versuchen Sie, den Pass zu ändern

/etc/init.d/mysql stop

mysqld_safe --skip-grant-tables &

mysql -u root

Richten Sie ein neues MySQL-Root-Benutzerpasswort ein

use mysql;
update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
flush privileges;
quit;

Stoppen Sie MySQL Server:

/etc/init.d/mysql stop

Starten Sie den MySQL Server und testen Sie ihn:

mysql -u root -p
28
Yasin Hassanien

Beim ersten Start des Servers geschieht Folgendes, vorausgesetzt das Datenverzeichnis des Servers ist leer:

  • Der Server wird initialisiert.
  • SSL-Zertifikate und Schlüsseldateien werden im Datenverzeichnis generiert.
  • Das validate_password-Plugin ist installiert und aktiviert.
  • Das Superuser-Konto 'root' @ 'localhost' wird erstellt. Das Passwort für den Superuser wird festgelegt und in der Fehlerprotokolldatei gespeichert. 

Um es anzuzeigen, verwenden Sie den folgenden Befehl:

Shell> Sudo grep 'temporary password' /var/log/mysqld.log

Ändern Sie das Root-Passwort so schnell wie möglich, indem Sie sich mit dem generierten temporären Passwort anmelden und ein benutzerdefiniertes Passwort für das Superuser-Konto festlegen:

Shell> mysql -uroot -p 

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!'; 
19
Lahiru

Ich weiß, dass dies eine alte Frage ist, aber ich glaube, das könnte jemandem helfen. Ich war kürzlich mit dem gleichen Problem konfrontiert, aber in meinem Fall erinnere ich mich gut an mein Passwort, aber es gab mir immer den gleichen Fehler. Ich habe so viele Lösungen ausprobiert, aber noch keine half, dann habe ich es versucht 

mysql -u root -p 

danach fragt es dich nach einem passwort wie diesem

Enter password: 

und dann gab ich das Passwort ein, das ich verwendet habe. Das ist alles

16
XY-JOE

Es passiert, wenn Ihr Passwort fehlt.

Schritte zum Ändern des Passworts, wenn Sie vergessen haben:

  1. Stoppen Sie MySQL Server (unter Linux):

    Sudo systemctl stop mysql
    
  2. Starten Sie die Datenbank, ohne die Grant-Tabellen zu laden oder Netzwerke zu aktivieren:

    Sudo mysqld_safe --skip-grant-tables --skip-networking &
    

    Mit dem kaufmännischen Und-Zeichen am Ende dieses Befehls wird dieser Prozess in der ausgeführt
    Hintergrund. Damit Sie Ihr Terminal weiterhin verwenden und #mysql -u root ausführen können, werden Sie nicht nach dem Kennwort gefragt.

    Wenn sie fehler wie unten erhalten:

    2018-02-12T08: 57: 39.826071Z mysqld_safe Verzeichnis '/ var/run/mysqld' für UNIX
    Socket-Datei existiert nicht . mysql -u root ERROR 2002 (HY000): Es kann keine Verbindung zum lokalen MySQL-Server über Socket hergestellt werden
    '/ var/run/mysqld/mysqld.sock' (2) [1] + Exit 1 

  3. MySQL-Dienstverzeichnis erstellen.

    Sudo mkdir /var/run/mysqld
    

    Erteilen Sie dem MySQL-Benutzer die Berechtigung, in das Dienstverzeichnis zu schreiben.

    Sudo chown mysql: /var/run/mysqld
    
  4. Führen Sie denselben Befehl in Schritt 2 aus, um mysql im Hintergrund auszuführen.

  5. Wenn Sie mysql -u root ausführen, erhalten Sie die mysql-Konsole, ohne ein Kennwort einzugeben. 

    Führen Sie diese Befehle aus

    FLUSH PRIVILEGES;
    

    Für MySQL 5.7.6 und neuer

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
    

    Für MySQL 5.7.5 und älter

    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
    

    Wenn der ALTER USER-Befehl nicht funktioniert, verwenden Sie Folgendes:

    UPDATE mysql.user SET authentication_string = PASSWORD('new_password')     WHERE User = 'root' AND Host = 'localhost';
    

Jetzt verlassen

  1. Die Instanz wurde manuell gestartet

    Sudo kill `cat /var/run/mysqld/mysqld.pid`
    
  2. Starten Sie Mysql neu

    Sudo systemctl start mysql
    
15

Ich benutze Ubuntu-16.04: installiertes mysql - 5.7 .

Versuchte die folgenden Schritte:

  1. dpkg --get-selections | grep mysql (um die Version von mysql zu erhalten).

  2. dpkg-reconfigure mysql-server-5.7

  3. mysql -u root -p

Ohne -p fordert Sie nicht auf, nach dem Kennwort zu fragen. Sobald Sie sich angemeldet haben, können Sie einen Benutzer mit einem Kennwort erstellen, indem Sie die folgenden Schritte ausführen:

CREATE USER 'your_new_username'@'your-hostname' IDENTIFIED BY 'your-password';

GRANT ALL PRIVILEGES ON *.* to 'your_new_username'@'your-hostname' WITH GRANT OPTION;

Beenden Sie das Stammverzeichnis und melden Sie sich von dem oben angegebenen an.

mysql -u <your_new_username> -p

Aus irgendeinem Grund funktioniert die Eingabe von mysql immer noch nicht. AT ALL. Ich schlage vor, mysql -u <name> -p zur Gewohnheit zu machen.

10
Nikhil Rushmith

Ich stieß auf dieses sehr nervige Problem und fand viele Antworten, die nicht funktionierten. Die beste Lösung, auf die ich gestoßen bin, war, mysql vollständig zu deinstallieren und neu zu installieren. Bei der Neuinstallation legen Sie ein Root-Passwort fest, das das Problem behoben hat.


Sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5
Sudo rm -rf /etc/mysql /var/lib/mysql
Sudo apt-get autoremove
Sudo apt-get autoclean

Ich habe diesen Code an anderer Stelle gefunden, also nehme ich keine Anerkennung dafür. Aber es funktioniert ... Um MySQL nach der Deinstallation zu installieren, denke ich, hat Digital Ocean ein gutes Tutorial dazu. Überprüfen Sie meine Gist für dieses .
https://Gist.github.com/JamesDaniel/c02ef210c17c1dec82fc973cac484096

6
JamesD

Bitte lesen Sie die offizielle Dokumentation: Mysql: So setzen Sie das Root-Passwort zurück

Wenn Sie Zugang zum Terminal haben: 

MySQL 5.7.6 und höher:

$ mysql
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

MySQL 5.7.5 und früher:

$ mysql
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
5
d.danailov

Ich verwende mysql-5.7.12-osx10.11-x86_64.dmg unter Mac OSX

Der Installationsvorgang richtet automatisch ein temporäres Kennwort für den Root-Benutzer ein. Sie sollten das Passwort speichern. Das Passwort kann nicht wiederhergestellt werden. 

Folgen Sie den Anweisungen

  1. Gehe zu cd /usr/local/mysql/bin/
  2. Geben Sie das temporäre Passwort ein (das ungefähr so ​​aussehen würde: "tsO07JF1 => 3")
  3. Sie sollten mysql> Prompt erhalten. 
  4. Run, SET PASSWORD FOR 'root'@'localhost' = PASSWORD('{YOUR_PASSWORD}'); Wenn du dein Passwort setzen möchtest: "root", dann lautet der Befehl SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
  5. ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER; ausführen
  6. exit ausführen
  7. ./mysql -u root -p ausführen
  8. Geben Sie Ihr Passwort ein. In meinem Fall würde ich "root" eingeben (ohne Anführungszeichen)
  9. Das ist alles. 

Der Einfachheit halber sollten Sie Ihrem PFAD "/usr/local/mysql/bin" hinzufügen

Jetzt können Sie von überall aus ./mysql -u root -p und dann das Kennwort eingeben und Sie erhalten mysql> Prompt. 

Ich hoffe es hilft. 

3
tausiq

Die Antwort klingt vielleicht dumm, aber nachdem ich Stunden verschwendet habe, habe ich sie so zum Laufen gebracht

mysql -u root -p

Ich habe die Fehlermeldung erhalten

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Obwohl ich das richtige Passwort eingegeben habe (das temporäre Passwort, das Sie erhalten, wenn Sie mysql zum ersten Mal installieren)

Ich habe es richtig verstanden, als ich das Passwort eingab, wenn die Eingabeaufforderung des Passworts blinkt

3
Amit Kumar

wenn das Problem weiterhin besteht, versuchen Sie, den Pass zu ändern

Stoppen Sie MySQL Server (unter Linux):

/etc/init.d/mysql stop

Stoppen Sie MySQL Server (unter Mac OS X):

mysql.server stop

Starten Sie den mysqld_safe-Dämon mit --skip-grant-tables

mysqld_safe --skip-grant-tables &
mysql -u root

Richten Sie ein neues MySQL-Root-Benutzerpasswort ein

use mysql;
update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
flush privileges;
quit;

Stoppen Sie MySQL Server (unter Linux):

/etc/init.d/mysql stop

Stoppen Sie MySQL Server (unter Mac OS X):

mysql.server stop

Starten Sie den MySQL-Serverdienst und testen Sie, um sich per Root anzumelden:

mysql -u root -p
2
Max Yao

betreten Sie einfach das Terminal

mysql -u root -p. Dann werden Sie nach dem Passwort gefragt

1
Vahap Gençdal

Nur eine Zeile und es hat mein Problem gelöst.

Sudo dpkg-reconfigure mysql-server-5.5
1

In Ubuntu 16.04 (MySQL-Version 5.7.13) konnte ich das Problem mit den folgenden Schritten beheben:

  1. Befolgen Sie die Anweisungen im Abschnitt B.5.3.2.2 Zurücksetzen des Root-Passworts: Unix- und Unix-Like-Systeme MySQL 5.7-Referenzhandbuch

  2. Als ich #Sudo mysqld_safe --init-file =/home/me/mysql-init ausprobierte, ist es fehlgeschlagen. Der Fehler war in /var/log/mysql/error.log

    2016-08-10T11: 41: 20.421946Z 0 [Anmerkung] Die Ausführung von init_file '/ home/me/mysql/mysql-init' wurde gestartet . 2016-08-10T11: 41: 20.422070Z 0 [ERROR]/usr/sbin/mysqld: Datei '/ home/me/mysql/mysql-init' nicht gefunden (Fehlercode: 13 - Berechtigung verweigert) 2016-08-10T11: 41: 20.422096Z 0 [ERROR] Abbruch

Die Dateiberechtigung von mysql-init war nicht das Problem. Sie müssen die Apparmor-Berechtigung bearbeiten

  1. Bearbeiten von #Sudo vi /etc/apparmor.d/usr.sbin.mysqld 

    ....
      /var/log/mysql/ r,
      /var/log/mysql/** rw,
    
    
    # Allow user init file
      /home/pranab/mysql/* r,
    
      # Site-specific additions and overrides. See local/README for details.
      #include <local/usr.sbin.mysqld>
    }
    
  2. Führen Sie #Sudo /etc/init.d/apparmor reload aus

  3. Starten Sie mysqld_safe noch einmal. Versuchen Sie Schritt 2 oben. Überprüfen Sie /var/log/mysql/error.log und stellen Sie sicher, dass kein Fehler vorliegt und die mysqld erfolgreich gestartet wurde

  4. Führen Sie #mysql -u root -p aus

    Passwort eingeben:

Geben Sie das Kennwort ein, das Sie in mysql-init angegeben haben. Sie sollten sich jetzt als root anmelden können.

  1. Herunterfahren von mysqld_safe durch #Sudo mysqladmin -u root -p Herunterfahren

  2. Starten Sie mysqld normal durch #Sudo systemctl starten Sie mysql

1
codegen

Dies wird funktionieren, wenn Sie die Befehle eingeben, die in den anderen Antworten gesagt werden, aber immer noch die folgenden Fehlermeldungen angezeigt werden:

mysqld_safe Logging to '/var/log/mysql/error.log'.
mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
[1]+  Exit 1                  Sudo mysqld_safe --skip-grant-tables

Befolgen Sie die folgenden Anweisungen Schritt für Schritt, bis Sie Ihr Passwort zurückgesetzt haben:

# Stop Your Server First
Sudo service mysql stop

# Make MySQL service directory.
Sudo mkdir /var/run/mysqld

# Give MySQL permission to work with the created directory
Sudo chown mysql: /var/run/mysqld

# Start MySQL, without permission and network checking
Sudo mysqld_safe --skip-grant-tables --skip-networking &

# Log in to your server without any password.
mysql -uroot mysql


# Update the password for the root user:
UPDATE mysql.user SET authentication_string=PASSWORD('YourNewPasswordBuddy'), plugin='mysql_native_password' WHERE User='root' AND Host='localhost';

#if you omit (AND Host='localhost') section, it updates the root pass regardless of its Host

FLUSH PRIVILEGES;
EXIT;

#Now you can use your new password to login to your Server
mysql -uroot -p
1
Mehdi

Wenn Sie noch kein Kennwort festgelegt haben, führen Sie mysql -uroot aus. Dies funktioniert für mich.

0
ahbon

Ich hatte ein ähnliches Problem:

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

Aber in meinem Fall war die Ursache wirklich dumm. Ich habe den Befehl aus einem Word-Dokument kopiert und das Problem war, dass ein Bindestrich nicht den 2D-Code ASCII, sondern den Unicode E28093 enthielt.

Falscher Weg:

mysql -u root –pxxxx

Richtiger Weg:

mysql -u root -pxxxx

Beide sehen gleich aus, sind aber nicht gleich (probieren Sie es aus, kopieren Sie sie und fügen Sie sie ein, indem Sie Ihr Passwort ersetzen).

Angesichts dieser Art von Fehlern wird empfohlen, den Befehl einzugeben, anstatt ihn zu kopieren und einzufügen.

0
cesargastonec

Wenn Sie unter Mac ein Problem mit dem ersten Kennwort haben, das Sie bei der Installation angegeben haben, können Sie einfach den mysql-Prozess beenden und es versuchen. 

Führen Sie den folgenden Befehl aus, um die PID von mysql zu ermitteln:

ps -aef | grep mysql | grep -v grep

2- den Prozess abbrechen:

kill -15 [process id] 

Dann können Sie sich mit dem ursprünglichen Passwort mit diesem Befehl anmelden:

mysql -uroot -p

In dem Sie aufgefordert werden, Ihr Passwort einzugeben. Geben Sie einfach das anfängliche Passwort ein.

0
Maryam Zakani

Das Standardkennwort von BY ist null. Sie müssen das Kennwort daher wie folgt ändern.

verbinden Sie sich mit MySQL

root # mysql

Verwenden Sie Mysql

mysql> update user set password = PASSWORD ('root'), wobei User = 'root';

mysql> Flush-Berechtigungen; mysql> quit

0
Rizwan Basheer

Ich habe es mit der richtigen Antwort von @Lahiru versucht, aber mit MySQL Server Version 8.0.16 (Community) unter macOS Mojave nicht funktioniert.

Befolgen Sie die obigen Anweisungen von Sameer Choudhary. Mit einigen Anpassungen konnte ich das root-Passwort ändern und den root-Zugriff von localhost aus aktivieren.

Update: All dies ist nicht erforderlich, wenn Sie unter Mac OS mit Homebrew installieren: "brew install mysql"

0
cspider

In den letzten MySQL-Versionen gibt es keine password in der mysql.user-Tabelle.

Sie müssen also ALTER USER ausführen. Fügen Sie diesen einzeiligen Befehl in die Datei ein. 

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Und als init-Datei ausführen (als root- oder mysql-user)

mysqld_safe --init-file=/home/me/mysql-init &

Der MySQL-Server muss gestoppt werden, um mysqld_safe zu starten. 

Möglicherweise gibt es auch ein Problem mit Apparmor-Berechtigungen zum Laden dieser Init-Datei. Weitere Informationen finden Sie hier https://blogs.Oracle.com/jsmyth/entry/apparmor_and_mysql

0