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


182

Ich bin ein Elektrotechniker, der hauptsächlich mit Stromversorgungssystemen herumspielt, anstatt zu programmieren. Vor kurzem habe ich ein Handbuch zur Installation einer Software-Suite unter Ubuntu befolgt. Ich habe mySQLeigentlich überhaupt keine Kenntnis davon . Ich habe die folgenden Installationen auf meinem Ubuntu durchgeführt.

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

me@ubuntu:~/Desktop/iPDC-v1.3.1/DBServer-1.1$ mysql -uroot -proot <"Db.sql"

Am Ende habe ich die folgende Fehlermeldung erhalten.

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

Wie kann ich das Problem beheben und fortfahren?


1
Dies scheint für mich nicht streng programmierbezogen zu sein. Ich habe es für die Migration zu SuperUser
Uli Köhler

Zukünftige Besucher vergessen auch nicht, die verschiedenen hier erläuterten Ursachen zu überprüfen: dev.mysql.com/doc/refman/8.0/en/problems-connecting.html
aderchox

Antworten:


154

Hinweis: Für MySQL 5.7+ lesen Sie bitte die Antwort von @Lahiru auf diese Frage. Das enthält aktuellere Informationen.

Für MySQL <5.7:

Das Standard-Root-Passwort ist leer (dh leere Zeichenfolge) nicht root. Sie können sich also einfach anmelden als:

mysql -u root

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

mysqladmin -u root password [newpassword]

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


5
@FarticlePilter Das -pFlag gibt das Passwort an. Nachdem Sie also Ihr Root-Passwort geändert haben, möchten Sie dies tun mysql -u root -p[newpassword]. Der < [filename]verwendet die std-Eingabe, um eine SQL-Datei unter dem Pfad auszuführen, der über die von Ihnen angegebenen Benutzeranmeldeinformationen angegeben wird.
Mike Brant

27
Ich habe es wie gesagt versucht mysqladmin -u root password abc1234, aber ich habe es bekommen mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: NO)'. Ich danke dir sehr!
Sibbs Gambling

2
@Kanagaroo In dieser Frage gibt das OP an, dass sie MySQL gerade zum ersten Mal installiert und dann versucht haben, über den MySQL-Befehlszeilenclient darauf zuzugreifen. Das klingt nach erstmaligem Zugriff auf mich.
Mike Brant

18
Tatsächlich wird für MySQL Community Server 5.7 das Standard-Root-Passwort bei der Installation zufällig generiert. Überprüfen Sie Ihre /var/log/mysqld.log auf eine Zeile, die über ein "temporäres Passwort" spricht. Spart stundenlanges Herumspielen.
Phil

1
@BraianMellor Dies löst das Problem für MySQL <5.7, indem das Standard-Root-Passwort (nach der Installation) unter Ubuntu leer ist (kein Passwort), wobei das Poster in der ursprünglichen Frage versucht hat, root / root zu verwenden. Die Frage betraf nicht das verlorene Passwort, das Ändern des Passworts oder ähnliches. Für neuere Versionen von MySQL ist die andere Antwort, auf die ich verwiesen habe, die richtige, da ein Benutzer in den Fehlerprotokollen nach dem zufällig generierten Root-Passwort suchen muss.
Mike Brant

114

Ich konnte dieses Problem lösen, indem ich diese Anweisung ausführte

sudo dpkg-reconfigure mysql-server-5.5

Dadurch wird das Root-Passwort geändert.


10
Genau das, was ich brauchte ... aber nicht jeder hat Version 5.5 des Servers. Verwenden Sie dpkg --get-selections | grep sql, um Ihre Version zu erhalten
Balmipour

1
@ Balmipour Was sollte der entsprechende Befehl sein, um die SQL-Version in Rhel 6.x
PrathamN

1
@ Divz, was sollte der Befehl sein, um MySQL-Server in Rhel / Centos
PrathamN

@PrathamN Ich habe nie red verwendet, aber wenn ich nach "Red Hat Check Packages-Versionen" google, erhalte ich Befehle wie diesen: yum list installedadd | grep sql, um nur SQL-Pakete zu filtern.
Balmipour

Wenn ich diesen Befehl unter Mac OS X ausführe, wird folgende Fehlermeldung angezeigt : sudo: dpkg-reconfigure: command not found. Irgendein Vorschlag?
Montag,

90

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

Stoppen Sie die Verwendung von MySQL

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 gesamte Befehl)

Dies ist ein fortlaufender Befehl, bis der Vorgang abgeschlossen ist. Öffnen Sie daher ein anderes Shell- / Terminalfenster und melden Sie sich ohne Kennwort an:

$ mysql -u root

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

Gemäß 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 ist 'Passwort'.


3
Bitte nicht so! Die Antwort von @ Divz ist sicherer. Zitieren des Dokuments über --skip-grant-tables: Dies ermöglicht jedem, eine Verbindung ohne Kennwort und mit allen [...] Berechtigungen herzustellen. Da dies unsicher ist, kann [...] --skip-grant-tablesin Verbindung mit verwendet werden --skip-networking, um zu verhindern, dass Remoteclients eine Verbindung herstellen. Oh, und auch, dieser hat bei mir nicht funktioniert. Deshalb bin ich hierher gekommen: p
Balmipour

1
Wenn Sie diesen Weg gehen , ja. Es hat bei mir nicht funktioniert, und das Befolgen der Antwort von @ Divz scheint mir sowieso viel einfacher zu sein. --Ich würde vorschlagen dpkg --get-selections | grep mysql-server-, dass Sie Ihre genaue MySQL-Version abrufen und dann sudo dpkg-rekonfigurieren Sie mysql-server-5.x (ersetzen Sie 5) .x mit Ihrer Serverversion, übrigens). Ich habe die Antwort von @ Divz mit dieser Genauigkeit kommentiert, aber sie wird durch die verschiedenen "Danke" -Kommentare maskiert.
Balmipour

4
Benutzerset aktualisieren authentication_string = password ('1111') wobei user = 'root';
Dejell

2
Das hat tatsächlich funktioniert ... die anderen Lösungen haben mir immer noch den gleichen Fehler gegeben.
eddy147

2
Seit MySQL 5.7.6 wurde die Kennwortspalte in "authentication_string" umbenannt. Hier können Sie mehr darüber lesen: bugs.mysql.com/bug.php?id=76655
IberoMedia

53

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 recht gut an mein Passwort, aber es gab mir immer wieder den gleichen Fehler. Ich habe so viele Lösungen ausprobiert, aber immer noch hat keine geholfen, dann habe ich es versucht

mysql -u root -p 

Danach werden Sie nach einem solchen Passwort gefragt

Enter password: 

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


2
Komisch, dass dies nach Tagen der Forschung geholfen hat.
girish_vr

Gut zu wissen, @girish_vr
XY-JOE

Hat für mich gearbeitet! Meine MySQL
kaspiotr

Dieser hat geholfen, was auf MySQL-Seite so unglaublich dumm ist, dass ich es immer noch nicht glauben kann.
wscourge

38

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

  • Der Server wird initialisiert.
  • SSL-Zertifikat 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.

Verwenden Sie den folgenden Befehl, um es anzuzeigen:

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 -u root -p #Login to root user with some password

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

16
Das sah vielversprechend aus, funktioniert aber bei mir nicht. Wenn ich sudo grep 'temporary password' /var/log/mysqld.log/var/log/mysqld.log: No such file or directory
renne,

4
Versuchen Sie es sudo grep 'temporary password' /var/log/mysql/error.log. @ Lahiru Lösung hat bei mir funktioniert.
Artemisian

17
Ich habe versucht, sudo grep 'temporäres Passwort' /var/log/mysql/error.log, aber es gibt nichts zurück.
Lerner

2
Versuchen Sie es shell> sudo grep 'password' /var/log/mysql/error.log. Hat für mich funktioniert, aber ich bekomme: root @ localhost wird mit einem leeren Passwort erstellt! Bitte deaktivieren Sie die Option --initialize-unsicher. Meine MySQL-
kaspiotr

1
@EnginYilmaz Warum schlagen Sie einen MySQL-Befehl vor, wenn das Problem darin besteht, dass MySQL nicht einmal zugänglich ist?
R-obert

33

Wenn das Problem weiterhin besteht, versuchen Sie, das Ändern des Durchgangs zu erzwingen

/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

1
Danke dir. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)plagte auch meinen Server. 'mysqld_safe' schlug ebenfalls fehl, bis ich nach Schritt 1 einen 'killall mysqld' durchführte.
Marcos

Bitte nicht so! Die Antwort von @ Divz ist sicherer. Zitieren des Dokuments über --skip-grant-tables: Dies ermöglicht jedem, eine Verbindung ohne Kennwort und mit allen [...] Berechtigungen herzustellen. Da dies unsicher ist, kann [...] --skip-grant-tablesin Verbindung mit verwendet werden --skip-networking, um zu verhindern, dass Remoteclients eine Verbindung herstellen. Oh, und auch, dieser hat bei mir nicht funktioniert. Deshalb bin ich hierher gekommen: p
Balmipour

2
Es gibt mir: FEHLER 1054 (42S22): Unbekannte Spalte 'Passwort' in 'Feldliste'
MD. Mohiuddin Ahmed

Überprüfen Sie die Antwort von @Anshu, es ist sicherer, dies zu handhaben
Mugoma J. Okomba

1
@ MD.MohiuddinAhmed Sie müssen eine neuere Version von MySQL-Server verwenden. Siehe diese Antwort: stackoverflow.com/a/31122246/6242649
Udayraj Deshmukh

32

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 das Netzwerk zu aktivieren:

    sudo mysqld_safe --skip-grant-tables --skip-networking &

    Das kaufmännische Und am Ende dieses Befehls führt dazu, dass dieser Prozess im
    Hintergrund ausgeführt wird, sodass Sie Ihr Terminal weiterhin verwenden und #mysql -u root ausführen können. Es wird nicht nach dem Kennwort gefragt.

    Wenn Sie Fehler wie folgt erhalten:

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

  3. Erstellen Sie das MySQL-Dienstverzeichnis.

    sudo mkdir /var/run/mysqld

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

    sudo chown mysql: /var/run/mysqld
  4. Führen Sie den gleichen Befehl in Schritt 2 aus, um MySQL im Hintergrund auszuführen.

  5. Führen Sie mysql -u root aus. Sie erhalten eine 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 Befehl ALTER USER nicht funktioniert, verwenden Sie:

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

Jetzt beenden

  1. Zum Stoppen der Instanz manuell gestartet

    sudo kill `cat /var/run/mysqld/mysqld.pid`
  2. Starten Sie MySQL neu

    sudo systemctl start mysql

2
In meinem Fall muss ich den Schritt 6 alssudo kill `sudo cat /var/run/mysqld/mysqld.pid`
kolunar

1
Dies ist derjenige, der für mich gearbeitet hat. Führen Sie in Schritt 5 Folgendes aus: 1. Verwenden Sie USER 2. Um das Kennwort zu ändern, verwenden Sie -> Aktualisieren Sie den Benutzersatz set authentication_string = PASSWORD ("Kennwort"), wobei User = 'root';
Bikram

1
Dies ist die beste Lösung, die ich herausfinden konnte. Verwenden von "5.7.26 MySQL Community Server (GPL)" unter macOS Mojave auf einem MBP '15 -Modell. Ich musste MySQL aus den Systemeinstellungen stoppen und dann Schritt 2 und Schritt 5 ausführen. Dann musste ich den MySQL-Prozess beenden, indem ich die PID mit ps -ef | nachschlug grep mysql.
cspider

12

Ich bin auf dieses sehr nervige Problem gestoßen und habe viele Antworten gefunden, die nicht funktionierten. Die beste Lösung war, MySQL vollständig zu deinstallieren und neu zu installieren. Bei der Neuinstallation haben Sie ein Root-Passwort festgelegt, wodurch das Problem behoben wurde.


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 woanders gefunden, daher nehme ich keine Gutschrift dafür. Aber es funktioniert. Um MySQL nach der Deinstallation zu installieren, hat Digital Ocean meiner Meinung nach ein gutes Tutorial. Kasse mein Kern dafür.
https://gist.github.com/JamesDaniel/c02ef210c17c1dec82fc973cac484096


12

Ich benutze Ubuntu-16.04: MySQL installiert - 5.7. Ich hatte das gleiche Problem: Anmeldung für Root-Benutzer verweigert.

Versuchte die folgenden Schritte:

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

  2. dpkg-reconfigure mysql-server-5.7

  3. mysql -u root -p

Ohne -p werden Sie nicht aufgefordert, nach dem Passwort zu fragen. Sobald Sie angemeldet sind, 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 über das oben angegebene Verzeichnis an.

mysql -u <your_new_username> -p

Aus irgendeinem Grund funktioniert es immer noch nicht, nur MySQL einzugeben. ÜBERHAUPT. Ich schlage vor, es zur Gewohnheit zu machen mysql -u <name> -p.


8

Betreten Sie einfach das Terminal

mysql -u root -p. als es Sie nach dem Passwort fragen wird


8

Wenn keine der anderen Antworten für Sie funktioniert und Sie diesen Fehler erhalten haben:

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 Befehle 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 -u root 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;

#kill mysqld_safe process
sudo service mysql restart

#Now you can use your new password to login to your Server
mysql -u root -p

#take note for remote access you should create a remote user and then grant all privileges to that remote user

Dies ist auch die richtige Antwort für MySQL 5.7 in Ubuntu 18.04 LTS. Danke
Dhiraj

7

Ich habe MySQL als Root-Benutzer ( $SUDO) installiert und das gleiche Problem
festgestellt.

  1. $ sudo cat /etc/mysql/debian.cnf

Dies zeigt Details wie-

# Automatically generated for Debian scripts. DO NOT TOUCH! [client] host = localhost user = debian-sys-maint password = GUx0RblkD3sPhHL5 socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] host = localhost user = debian-sys-maint password = GUx0RblkD3sPhHL5 socket = /var/run/mysqld/mysqld.sock

Oben haben wir Passwort sehen können nur gehen wir verwenden(GUx0RblkD3sPhHL5) , dass in den Eingebungen

  1. mysql -u debian-sys-maint -p Enter password:
    Geben Sie jetzt das Passwort ein ( GUx0RblkD3sPhHL5 ).

  2. Jetzt exitvon MySQL und wieder anmelden als-

    mysql -u root -p Enter password:
    Geben Sie nun ein neues Passwort ein. Das ist alles, wir haben ein neues Passwort für die weitere Verwendung.

Es hat bei mir funktioniert, hoffe dir auch zu helfen!


6

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

Wenn Sie Zugriff auf das 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');

1
Gives: ERROR 1131 (42000): Sie verwenden MySQL als anonymen Benutzer und anonyme Benutzer dürfen keine Kennwörter ändern
MD. Mohiuddin Ahmed

1
Es ist normal. Ihr Benutzer ist anonym. Sie müssen ausführen> mysql -u {your_username}
d.danailov

3

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

Der Installationsprozess 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 die Eingabeaufforderung mysql> erhalten.
  4. Ausführen, SET PASSWORD FOR 'root'@'localhost' = PASSWORD('{YOUR_PASSWORD}');Wenn Sie Ihr Passwort festlegen möchten: "root", dann wäre der Befehl,SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
  5. Lauf ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
  6. Lauf exit
  7. Lauf ./mysql -u root -p
  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 "/usr/local/mysql/bin"Ihren PFAD hinzufügen

Jetzt können Sie von überall aus ./mysql -u root -pdas Passwort eingeben und dann erhalten Sie die Eingabeaufforderung mysql>.

Ich hoffe es hilft.


3

Die Antwort mag albern klingen, aber nachdem ich Stunden Zeit verschwendet habe, habe ich es 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 bei der ersten Installation von MySQL erhalten)

Ich habe es richtig verstanden, als ich das Passwort eingegeben habe, als die Passwortabfrage blinkte


2

Wenn das Problem weiterhin besteht, versuchen Sie, das Ändern des Durchgangs zu erzwingen

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-Daemon 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 die Anmeldung per Root:

mysql -u root -p

1

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

verbinde dich mit mysql

root # mysql

Verwenden Sie MySQL

mysql> update user set password = PASSWORD ('root') wobei User = 'root'; Laden Sie abschließend die Berechtigungen neu:

mysql> Flush-Berechtigungen; mysql> beenden



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-ähnliche Systeme MySQL 5.7 Referenzhandbuch

  2. Als ich #sudo mysqld_safe --init-file = / home / me / mysql-init ausprobierte, schlug dies fehl. Der Fehler war in /var/log/mysql/error.log

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

Die Dateiberechtigung von mysql-init war nicht das Problem, Apparmor-Berechtigung muss bearbeitet werden

  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. Laden Sie #sudo /etc/init.d/apparmor neu

  3. Starten Sie mysqld_safe erneut und versuchen Sie Schritt 2 oben. Überprüfen Sie /var/log/mysql/error.log, um sicherzustellen, dass kein Fehler vorliegt und mysqld erfolgreich gestartet wurde

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

    Passwort eingeben:

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

  1. Fahren Sie mysqld_safe mit #sudo mysqladmin -u root -p herunter

  2. Starten Sie mysqld auf normale Weise mit #sudo systemctl. Starten Sie mysql


1

Wenn Sie MySQL als Teil eines Docker-Images (z. B. auf Port 6606) und einer Ubuntu-Installation (auf Port 3306) haben, reicht es nicht aus, den Port anzugeben:

mysql -u root -p -P 6606

wird werfen:

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

Da standardmäßig versucht wird, eine Verbindung zu localhost herzustellen, wird das Problem durch Angabe Ihrer lokalen IP-Adresse behoben:

mysql -u root -p -P 6606 -h 127.0.0.1

0

In neueren MySQL-Versionen gibt es kein passwordInmysql.user Tabelle.

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

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

Und führen Sie es als Init-Datei aus (als Root- oder MySQL-Benutzer)

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

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

Möglicherweise liegt auch ein Problem mit den Apparmor-Berechtigungen zum Laden dieser Init-Datei vor. Lesen Sie hier mehr https://blogs.oracle.com/jsmyth/entry/apparmor_and_mysql


0

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


0

Wenn Sie auf einem Mac Probleme beim Anmelden mit dem ersten Kennwort haben, das Sie bei der Installation erhalten haben, können Sie den MySQL-Prozess möglicherweise einfach beenden und dann versuchen.

Also: 1- Führen Sie den folgenden Befehl aus, um die PID von MySQL zu ermitteln:

ps -aef | grep mysql | grep -v grep

2- Beenden Sie den Prozess:

kill -15 [process id] 

Anschließend können Sie sich mit dem folgenden Kennwort mit dem folgenden Kennwort anmelden:

mysql -uroot -p

Welche bitten Sie, Ihr Passwort einzugeben. Geben Sie einfach das ursprüngliche Passwort ein.


0

Ich hatte ein ähnliches Problem:

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

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 ASCII-2D-Code, 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 es und fügen Sie es ein, indem Sie Ihr Passwort ersetzen).

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


0

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

Befolgen Sie die Anweisungen von Sameer Choudhary oben und mit einigen Anpassungen konnte ich das Root-Passwort ändern und den Root-Zugriff von localhost aktivieren.

Update: All dies ist nicht erforderlich, wenn Sie unter Mac OS mit Homebrew installieren: "Brew Install MySQL"


0

Ich hatte dieses Problem mit Ubuntu 18.04 LTS und MySQL Server Version 5.7.27-0ubuntu0.18.04.1 (Ubuntu).

Meine Lösung war (als root mit laufen sudo -i)

mysql <<-EOSQL
  use mysql;
  update user set plugin="mysql_native_password" where User='root';
  FLUSH PRIVILEGES ;
EOSQL

mysqladmin -u root password new_pw

0

Ich bin auch auf das gleiche Problem gestoßen, was ich getan habe, war

1) Öffnen Sie Ihren cmd

2) Navigieren Sie zu C: \ Programme \ MySQL \ MySQL Server 8.0 \ bin> (wobei MySQL Server 8.0 je nach installiertem Server unterschiedlich sein kann).

3) Geben Sie dann den folgenden Befehl ein: mysql -u root -p

4) Ich werde nach dem Passwort fragen ... drücken Sie einfach die Eingabetaste, da manchmal das Passwort, das Sie während der Installation eingegeben haben, in leer geändert wird.

Jetzt können Sie einfach auf die Datenbank zugreifen

Diese Lösung funktionierte für mich auf der Windows-Plattform


0

Während die Top-Antwort (mit mysqladmin) auf Mac 10.15 funktionierte, funktionierte sie auf Ubuntu nicht. Dann habe ich viele der anderen Optionen ausprobiert, einschließlich des sicheren Starts für MySQL. Keine hat funktioniert. So wird eine neue Antwort hinzugefügt.

Zumindest für die Version, die ich bekam, 5.7.28-0ubuntu0.18.04.4fehlten Antworten IDENTIFIED WITH mysql_native_password. 5.7.28 ist die Standardeinstellung für das aktuelle LTS und sollte daher die Standardeinstellung für die meisten neuen Systeme sein (bis 20.04 LTS herauskommt).

Gefunden: https://www.digitalocean.com/community/questions/can-t-set-root-password-mysql-server und jetzt angewendet

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_pass_here';

was funktioniert.


0

Der Fehler, mit dem ich konfrontiert war, war

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

Es war ein Problem mit dem laufenden Port.

Standardmäßig läuft MySQL port 3306 .

Sie können dies überprüfen, indem Sie ausführen

  • in einem 32-Bit-System:

    sudo /opt/lampp/manager-linux.run

  • in einem 64-Bit-System:

    sudo /opt/lampp/manager-linux-x64.run

und klicken Sie auf die configureSchaltfläche

xampp-Bedienfeld

In meinem Fall lief der Port auf 3307 und der von mir verwendete Befehl war

mysql -u root -p -P 3307 -h 127.0.0.1

0

In meinem Fall habe ich versucht, eine zu bestehen Befehl an einen Container. In diesem Fall wurde nur das erste Wort interpretiert. Stellen Sie sicher, dass Sie nicht ausgeführt werden:

mysql

im Gegensatz zu:

mysql -uroot -ppassword schemaname

versuchen Sie vielleicht zu zitieren:

'mysql -uroot -ppassword schemaname'
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.