So finden Sie das MySQL-Root-Passwort heraus

167

Ich kann mein MySQL-Root-Passwort nicht herausfinden. Wie kann ich das herausfinden? Gibt es eine Datei, in der dieses Passwort gespeichert ist?

Ich folge diesem Link , habe aber kein Verzeichnis directadmin in local.

Om3ga
quelle
Gefunden von einer einfachen Google-Suche: dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html
Arran
11
Standard-Root-Passwort ist - warte darauf - "root" (ohne die Anführungszeichen) oder überhaupt kein Passwort (und ist das MySQL-Server wirklich dein)
Nikola Bogdanović
Ja, es ist mein lokaler MySQL-Server auf meinem Laptop
Om3ga
Hat jemand diese Frage einfach durchgearbeitet und jede richtige und relevante Antwort abgelehnt ?
Lanzz

Antworten:

142

Dank @thusharaK konnte ich das Root-Passwort zurücksetzen, ohne das alte Passwort zu kennen.

Auf Ubuntu habe ich folgendes gemacht:

sudo service mysql stop
sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-networking

Führen Sie dann MySQL in einem neuen Terminal aus:

mysql -u root

Führen Sie die folgenden Abfragen aus, um das Kennwort zu ändern:

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

In MySQL 5.7 wurde das Kennwortfeld im Tabellenfeld mysql.user entfernt. Jetzt lautet der Feldname 'authentication_string'.

Beenden Sie den abgesicherten MySQL-Modus und starten Sie den MySQL-Dienst wie folgt:

mysqladmin shutdown
sudo service mysql start
eeezyy
quelle
24
Ich musste mysqladmin -u root -p shutdownmit dem neuen Passwort verwenden.
SL Barth - Stellen Sie Monica
2
Besonders
netter
8
Ich kann das nicht machen mysql -u root. Es zeigt FehlerAccess denied
Avinash Raj
4
@ AvashashRaj: Versuchen Sie dies: sudo mysql -u root
Allen Gingrich
Genial. Ich verstehe, was in RHEL 7 funktioniert hat: Terminal 1: sudo-Dienst mysql stop sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-network Terminal 2: mysql -u root UPDATE mysql.user SET Password = PASSWORD ('neues Passwort') WHERE User = 'root'; SPÜLPRIVILEGIEN; mysqladmin -u root -p shutdown Hinweis: Sobald Sie mysqladmin herunterfahren, werden die abgesicherten Modi in Terminal 1 beendet. sudo service mysql start Das war's und es funktioniert wie ein Zauber mit dem neuen Passwort!
StackOverFlow User
65

Sie können das Hash-Passwort nicht anzeigen. Sie können es nur zurücksetzen!

Stoppen Sie 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

(ü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';

MySQL 5.7 und höher:

mysql> use mysql; 
mysql> update user set authentication_string=password('password') where user='root'; 

Starten Sie MySQL:

sudo mysql start

oder

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

Ihr neues Passwort lautet "Passwort".

tk_
quelle
sudo /usr/local/mysql/support-files/mysql.server stop sudo: /usr/local/mysql/support-files/mysql.server: Befehl nicht gefunden
Isuru
Was ist in diesem Fall zu tun?
Isuru
Es sieht so aus, als ob MySQL nicht richtig installiert ist. Deinstallieren Sie es ordnungsgemäß und installieren Sie es erneut.
tk_
Vielen Dank. Etwas ging mit mir merkwürdig mysql_secure_installationund root kooperierte nicht mehr. Was macht die authentication_stringEinstellung?
wird
3
Um neu zu starten, versuchen Sie es mysqladmin -u root -p shutdownmit dem neuen Passwort dannsudo service mysql start
Forumulator
37

MySQL 5.7 und höher speichert root in der MySQL-Protokolldatei.

Bitte versuchen Sie dies:

sudo grep 'temporary password' /var/log/mysqld.log
Vlad
quelle
In meinem Fall war das Passwort nicht hier; /var/log/mysql/error.logenthielt jedoch stattdessen eine Warnung, dass das Root-Passwort leer sei - so rettete diese Art meinen Tag :)
Janaka Bandara
18

Eine Sache, die mich bei einer Neuinstallation von mySQL auslöste und mich fragte, warum ich das Standardkennwort nicht zum Laufen bringen konnte und warum selbst die Rücksetzmethoden nicht funktionierten. Nun stellt sich heraus, dass unter Ubuntu 18 die neueste Version des MySQL-Servers standardmäßig überhaupt keine Kennwortauthentifizierung für den Root-Benutzer verwendet. Das bedeutet also, dass es egal ist, auf was Sie es eingestellt haben, Sie können es nicht verwenden. Es wird erwartet, dass Sie sich von einem privilegierten Socket aus anmelden. so

mysql -u root -p

funktioniert überhaupt nicht, auch wenn Sie das richtige Passwort verwenden !!! Es wird den Zugriff verweigern, egal was Sie eingeben.

Stattdessen müssen Sie verwenden

sudo mysql

das wird ohne Passwort funktionieren. Sobald Sie in sind, müssen Sie eingeben

 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password you want to use';

dann melde dich ab und jetzt akzeptiert das verdammte Ding endlich dein Passwort

Kit Ramos
quelle
14

Befolgen Sie diese Schritte, um das Kennwort im Windows-System zurückzusetzen

  1. Beenden Sie den MySQL-Dienst über den Task-Manager

  2. Erstellen Sie eine Textdatei und fügen Sie die folgende Anweisung ein

MySQL 5.7.5 und früher:

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


MySQL 5.7.6 und höher:

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

  1. Speichern unter mysql-init.txtund platzieren Sie es in 'C' drive.

  2. Öffnen Sie die Eingabeaufforderung und fügen Sie Folgendes ein

C:\> mysqld --init-file=C:\\mysql-init.txt

Lokesh Kumar Chippada
quelle
2
Dies war ein Lebensretter, toller Tipp!
Nicholas Kreidberg
arbeitete in Centos7 mysqld --init-file=/root/m.txt. Ich habe den obigen Befehl SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yournewpassword');zu /root/m.txt hinzugefügt
Damodar Bashyal
8

Sofern der Paketmanager Sie nicht auffordert, das Root-Passwort während der Installation einzugeben, ist das Standard-Root-Passwort die leere Zeichenfolge. Geben Sie Folgendes ein, um eine Verbindung zum frisch installierten Server herzustellen:

shell> mysql -u root --password=
mysql>

Um das Passwort zu ändern, rufen Sie die Unix-Shell zurück und geben Sie Folgendes ein:

shell> mysqladmin -u root --password= password root

Das neue Passwort lautet 'root'. Stellen Sie nun eine Verbindung zum Server her:

shell> mysql -u root --password=
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Hoppla, das Passwort hat sich geändert. Verwenden Sie die neue , root:

shell> mysql -u root --password=root
...
blah, blah, blah : mysql welcome banner
...
mysql> 

Bingo! Neu etwas interessantes machen

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

Maurycy

mszmurlo
quelle
1
Derzeit werden standardmäßig keine Kennwörter, sondern authentifizierte Sockets verwendet. Nur das Passwort zu ändern ist also nicht mehr gut genug.
Kit Ramos
7

Zusätzlich zu den anderen Antworten wird in einer cpanel-Installation das MySQL-Root-Passwort in einer Datei mit dem Namen gespeichert /root/.my.cnf. (und der cpanel-Dienst setzt es bei Änderungen zurück, sodass die anderen Antworten hier nicht helfen)

Ohad Cohen
quelle
6

Sie können MySQL-Root-Passwort anzeigen, nun, ich habe es auf MySQL 5.5 versucht, also wissen Sie nicht, ob andere neue Versionen gut funktionieren oder nicht

nano ~/.my.cnf
user889030
quelle
4

Das hat bei mir funktioniert:

Geben Sie am Terminal Folgendes ein

$ sudo mysql -u root -p

Passwort eingeben: // Drücken Sie einfach die Eingabetaste

mysql>

Licht
quelle
Es scheint, dass der MySQL-Server standardmäßig keine Kennwortauthentifizierung mehr verwendet. Sie müssen den MySQL-Client als Superuser (sudo) starten, um Zugriff zu erhalten, bis Sie die Anmeldemethode ändern.
Kit Ramos
4

Das Standardkennwort, das nach der sofortigen Installation des MySQL-Servers für mich funktioniert hat, lautet: mysql

Deepak Chaudhry
quelle
2
Vielleicht hat er die Frage nicht beantwortet, aber viele Leute, die hierher kommen, finden vielleicht, dass sie ihr Problem lösen.
Ohad Cohen
3

Die Prozedur ändert sich abhängig von der Version von MySql. Befolgen Sie die Anweisungen genau wie für Ihre Version beschrieben:

  • TIPPS - Lesen Sie vor der Anweisungsseite Ihre Version von MySql *

  • In Schritt 5: Erstellen Sie anstelle von CMD eine Verknüpfung auf Ihrem Desktop, indem Sie CDM.exe aufrufen. Klicken Sie dann mit der rechten Maustaste auf die Verknüpfung und wählen Sie "Als Administrator ausführen".

  • In Schritt 6: Überspringen Sie die erste vorgeschlagene Version des Befehls und führen Sie die zweite aus, die mit dem Parameter --defaults-file

  • Sobald Sie den Befehl ausführen und alles in Ordnung ist, bleibt das CMD-Fenster geöffnet und der Befehl von Schritt 6 wird weiter ausgeführt. Schließen Sie einfach das Fenster (klicken Sie auf 'x') und erzwingen Sie das Schließen von MySQl im Task-Manager.

  • Löschen Sie die Datei mit den SQL-Befehlen und starten Sie MySQL erneut. Das Passwort muss jetzt geändert werden.

5.0 http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html

5.1 http://dev.mysql.com/doc/refman/5.1/en/resetting-permissions.html

... ändern Sie einfach die Version im Link (5.5, 5.6, 5.7)

JuanCamilo
quelle
3

Versuchen Sie in Ihrer .err-Datei "Hostname" im Datenordner, an dem MySQL arbeitet, nach einer Zeichenfolge zu suchen, die mit Folgendem beginnt:

"Für roor @ localhost wird ein temporäres Passwort generiert."

Sie können verwenden

less /mysql/data/dir/hostname.err 

dann Schrägstrichbefehl gefolgt von der Zeichenfolge, nach der Sie suchen möchten

/"A temporary password"

Drücken Sie dann n, um zum nächsten Ergebnis zu gelangen.

nDCasT
quelle
0

System:

  • CentOS Linux 7
  • mysql Ver 14.14 Distrib 5.7.25

Verfahren:

  1. Öffnen Sie zwei Shell-Sitzungen und melden Sie sich bei einer als Linux-Root-Benutzer und bei der anderen als Nicht-Root-Benutzer mit Zugriff auf den mysqlBefehl an.

  2. Stoppen Sie in Ihrer Root-Sitzung den normalen mysqld-Listener und starten Sie einen Listener, der die Kennwortauthentifizierung umgeht ( Hinweis: Dies stellt ein erhebliches Sicherheitsrisiko dar, da jeder, der Zugriff auf den mysql Befehl hat, ohne Kennwort auf Ihre Datenbanken zugreifen kann. Möglicherweise möchten Sie aktive Shell-Sitzungen schließen und / oder deaktivieren Sie den Shell-Zugriff, bevor Sie dies tun):

    # systemctl stop mysqld
    # /usr/sbin/mysqld --skip-grant-tables -u mysql &

  3. Melden Sie sich in Ihrer Nicht-Root-Sitzung bei MySQL an und legen Sie das MySQL-Root-Passwort fest:

    $ mysql
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

    mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
    Query OK, 0 rows affected, 1 warning (0.01 sec)

    mysql> quit;

  4. Beenden Sie in Ihrer Root-Sitzung die kennwortlose Instanz von mysqld und stellen Sie den normalen mysqld-Listener wieder her:

    # kill %1
    # systemctl start mysqld

  5. Testen Sie in Ihrer Nicht-Root-Sitzung das neue Root-Passwort, das Sie oben konfiguriert haben:

    $ mysql -u root -p
    Enter password:
    Welcome to the MySQL monitor. Commands end with ; or \g.
    ...
    mysql>

CODE-REaD
quelle
-2

Ich habe das anders gelöst, für manche mag das einfacher sein.

Ich habe es so gemacht, weil ich versucht habe, im abgesicherten Modus zu starten, aber keine Verbindung mit dem Fehler herstellen kann: FEHLER 2002 (HY000): Über den Socket '/var/run/mysqld/mysqld.sock' (2) kann keine Verbindung zum lokalen MySQL-Server hergestellt werden.

Was ich getan habe war, mich normal als root zu verbinden:

$ sudo mysql -u root

Dann habe ich einen neuen Superuser erstellt:

mysql> grant all privileges on *.* to 'myuser'@'%' identified by 'mypassword' with grant option;
mysql> quit

Dann logge dich als myuser ein

$ mysql -u myuser -p -h localhost

Der Versuch, das Passwort zu ändern, gab mir keine Fehler, tat aber nichts für mich, so dass ich den Root-Benutzer fallen ließ und neu erstellte

mysql> drop user 'root'@'localhost;
mysql> mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'mypassword' with grant option;

Der Root-Benutzer arbeitet jetzt mit dem neuen Passwort

Trevorbest
quelle
-5

Gehen Sie zu phpMyAdmin> config.inc.php> $ cfg ['Server'] [$ i] ['Passwort'] = '';

user3288185
quelle
1
Es gibt nichts in der Frage über phpmyadmin.
Marquis von Lorne