Setzen Sie das MySQL-Root-Passwort nach der Installation auf dem Mac mit der Anweisung ALTER USER zurück

182

Ich bin neu in der gesamten Mac-Erfahrung. Ich habe kürzlich MySQL installiert und es scheint, dass ich das Passwort nach der Installation zurücksetzen muss. Ich werde nichts anderes tun lassen.

Jetzt habe ich das Passwort schon wie gewohnt zurückgesetzt:

update user set password = password('XXX') where user = root;

(Übrigens: Ich habe ewig gebraucht, um herauszufinden, dass MySQL aus irgendeinem bizarren Grund das Feld 'password' in 'authentication_string' umbenannt hat. Ich bin ziemlich verärgert über solche Änderungen.)

Leider muss ich das Passwort auf eine andere, mir unbekannte Weise ändern. Vielleicht ist hier schon jemand auf dieses Problem gestoßen?

dengar81
quelle

Antworten:

506

Wenn Sie das Kennwort NICHT zum ersten Mal einrichten, versuchen Sie diese Methode:

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

Und wenn Sie die folgende Fehlermeldung erhalten, besteht eine hohe Wahrscheinlichkeit, dass Sie Ihr Passwort noch nie zuvor festgelegt haben:

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. 

So richten Sie Ihr Passwort zum ersten Mal ein :

mysql> SET PASSWORD = PASSWORD('your_new_password');
Query OK, 0 rows affected, 1 warning (0.01 sec)

Referenz: https://dev.mysql.com/doc/refman/5.6/en/alter-user.html

Madmint
quelle
10
Vielen Dank! Sehr verwirrende Fehlermeldung von MySQL!
Ed.
1
Dies funktionierte für mich mit mysql-5.7.13-osx10.11-x86_64
GiriB
1
Nach 'mysql> SET PASSWORD = PASSWORD (' your_new_password ');' wird folgende Fehlermeldung angezeigt: 'ERROR 29 (HY000): File' ./mysql/user.MYD 'nicht gefunden (Errcode: 2 - No such Datei oder Verzeichnis) '. Kann mir jemand helfen ?
Ray Kim
3
Sie werden feststellen, dass Sie im Gegensatz zu MySQL nicht die Anweisung "ALTER USER" verwenden, sondern nur "SET PASSWORD" ...
Fabien Haddadi
1
Im ersten Beispiel wird möglicherweise versucht, ein Kennwort für einen anderen Benutzer als das festzulegen, das Sie beim Senden dieser Zeile verwenden. Im zweiten Schritt wird versucht, das Kennwort für den Benutzer festzulegen, mit dem Sie sich bei MySQL angemeldet haben. So funktioniert das spätere.
Hafenkranich
129

Wenn Sie MySQL mit gestartet haben mysql -u root -p

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

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

shnraj
quelle
1
Danke dir! Das hat bei mir funktioniert! Ich verwende mysql-5.7.11-osx10.10-x86_64.
LeArNr
Das hat funktioniert; Vielen Dank! Es macht mich zutiefst traurig, dass MySQL, obwohl es ein so weit verbreitetes Programm ist, keine One-Stop-Dokumentation enthält, um es zu installieren und schnell zum Laufen zu bringen.
Shatu
Vielen Dank ! Es hat mir geholfen
Sparw
3
Nach viel Frust funktionierte eine Variante davon auf Minze 18 MySQL 5.7.18:ALTER USER 'root'@'localhost' indentified WITH mysql_native_password BY 'password';
Steve
Eine Million danke. Das ist das einzige, was für mich funktioniert hat.
RandyMy
33

Ich habe das gleiche Problem auf dem Mac

Melden Sie sich zunächst im Sandbox-Modus bei MySQL an

mysql -u <user> -p --connect-expired-password

Legen Sie dann das Passwort fest

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

Query OK, 0 rows affected, 1 warning (0.01 sec)

Es funktioniert bei mir ~

via: /dba/118852/your-paswssword-has-expired-after-restart-mysql-when-updated-mysql-5-7-8-rcde

Ezio Shiki
quelle
1
Scheint ziemlich kompliziert zu sein, wenn man bedenkt, dass man dies tun muss, bevor man die Datenbank überhaupt benutzt.
seba.wagner
in der Warnung, die Sie verwenden sollenSET PASSWORD FOR 'root'@'localhost' = 'XXXX';
Arsen Zahray
22

Wenn Sie MySQL 5.7.6 und höher verwenden:

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

Wenn Sie MySQL 5.7.5 und früher verwenden:

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

MySQL-Dokumentation

Johel Alvarez
quelle
1
Ich benutze MySQL 5.7.9 und das Seltsame SET PASSWORD = PASSWORD('my_pass')funktioniert für mich. Es gibt Kommentare von Leuten mit neueren Versionen, die erwähnen, dass diese Aussage auch für sie funktioniert hat. Trotzdem habe ich Ihre Antwort positiv bewertet, da Sie diese spezielle Referenz in MySQL-Dokumenten gefunden haben, die niemand zuvor erwähnt hat.
Armfoot
MySQL 8 SET PASSWORD warf und Fehler. ALTER USER hat gearbeitet.
Timar Ivo Batis
13

Unter MySQL 5.7.x müssen Sie zum nativen Kennwort wechseln, um es ändern zu können, z. B.:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
Vadim Smilansky
quelle
11

Führen Sie diese aus:

$ cd /usr/local/mysql/bin
$ ./mysqladmin -u root password 'password'

Dann renne

./mysql -u root

Es sollte sich anmelden. Führen Sie nun FLUSH-Berechtigungen aus.

Beenden Sie dann die MySQL-Konsole und versuchen Sie, sich anzumelden. Wenn dies nicht funktioniert, führen Sie folgende Schritte aus:

$ mysql -u root
mysql> USE mysql;
mysql> UPDATE user SET authentication_string=PASSWORD("XXXXXXX") WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

Ändern Sie xxxxxx in Ihr neues Passwort. Versuchen Sie dann erneut, sich anzumelden.

Aktualisieren. Siehe diese http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

Es sollte Ihr Problem lösen.

Wenn Sie auf Orakel sind, versuchen Sie dies

ALTER USER username IDENTIFIED BY password

quelle
Nein, tut mir leid, auch das funktioniert nicht. Zumindest nicht mehr. Die Spalte 'Passwort' wurde übrigens von Oracle umbenannt. Es heißt jetzt authentication_string. Ich kann diesen Befehl jedoch nicht ausführen, da ich zuerst das Kennwort mit dem Befehl ALTER USER ändern muss. Das ist unglaublich frustrierend, denn so würden Sie das Passwort traditionell nicht aktualisieren. ALTER sollte für Tabellen, Funktionen und andere Dinge reserviert sein und keine Einträge in einer Tabelle ändern. Das ist die Update-Anweisung. (Entschuldigung zu schimpfen)
dengar81
@ Shivan Paw: Zwei Warnungen, die ich erwarten würde: mysqladmin: [Warnung] Die Verwendung eines Kennworts auf der Befehlszeilenschnittstelle kann unsicher sein. Warnung: Da das Kennwort im Klartext an den Server gesendet wird, verwenden Sie die SSL-Verbindung, um die Kennwortsicherheit zu gewährleisten. - Ich würde denken, dass das Passwort aktualisiert wird. Und tatsächlich kann ich mich mit dem neuen Passwort anmelden. Ich kann jedoch immer noch keine Abfragen ausführen, da ich das Kennwort mit dem Befehl ALTER USER aktualisieren muss :(.
dengar81
@ Shivan Paw: Versuchen Sie was? Ich habe bereits versucht, die von Ihnen vorgeschlagenen Befehle zu verwenden. Zurücksetzen des Passworts mit dem Befehl ./mysqladmin (zwei Warnungen) und anschließendes Ausführen des Updates auf mysql.user ... Der zweite Befehl schlägt mit der Meldung "Sie müssen Ihr Passwort mit ALTER USER [...] zurücksetzen" fehl
dengar81
Dies ist die einzige Lösung, die für mich funktioniert hat. Wenn Sie ein abgelaufenes Passwort in der neuesten Version von MySQL haben, können Sie weder ALTER_USER noch SET_PASSWORD verwenden.
Aaron Henderson
7

Vielleicht versuchen Sie das?

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

oder

SET PASSWORD FOR 'root'@'%' = PASSWORD('XXX');

Je nachdem, welchen Zugriff Sie verwenden.

(und nicht sicher, ob Sie sich die Feldnamen ändern sollten ...)

https://dev.mysql.com/doc/refman/5.0/en/set-password.html

Mateo Barahona
quelle
Nein, dies funktioniert nicht: FEHLER 1820 (HY000): Sie müssen Ihr Kennwort mit der Anweisung ALTER USER zurücksetzen, bevor Sie diese Anweisung ausführen.
Dengar81
7

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

Verwenden Sie diese Zeile ...

Manoj Behera
quelle
7

UPDATE user SET authentication_string = PASSWORD ("MyPassWord") WHERE User = 'root'; FEHLER 1064 (42000): In Ihrer SQL-Syntax ist ein Fehler aufgetreten. Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, auf die richtige Syntax für die Verwendung in der Nähe von '("MyPassWord") WHERE User =' root '' in Zeile 1

Gelöst mit

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

Referenz von unten

https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html

Siddharth Pandey
quelle
5

Am habe Ver 14.14 Distrib 5.7.19, for macos10.12 (x86_64)ich mich angemeldet als: und mysql -uroot -pdann das von MySQL generierte Passwort bei der Installation eingegeben. Dann..

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

Beispiel:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Ab1234'; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye $ mysql -uroot -p

Und Sie können 'Ab1234' eingeben

Kenny Alvizuris
quelle
3

MySQL 5.7.24 Holen Sie sich Root First Login

Schritt 1: Passwort aus dem Protokoll holen

 grep root@localhost /var/log/mysqld.log
    Output
        2019-01-17T09:58:34.459520Z 1 [Note] A temporary password is generated for root@localhost: wHkJHUxeR4)w

Schritt 2: Melden Sie sich mit ihm bei MySQL an

mysql -uroot -p'wHkJHUxeR4)w'

Schritt 3: Sie geben ein neues Root-Passwort ein

SET PASSWORD = PASSWORD('xxxxx');

du erhältst ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

Wie kann ich das beheben?

Führen Sie dies aus SET GLOBAL validate_password_policy=LOW;

Versuch es noch einmal SET PASSWORD = PASSWORD('xxxxx');

Robert A.
quelle
2

Hier ist der Weg, der für mich funktioniert.

mysql> show databases ;

FEHLER 1820 (HY000): Sie müssen Ihr Kennwort mit der Anweisung ALTER USER zurücksetzen, bevor Sie diese Anweisung ausführen.

mysql> uninstall plugin validate_password;

FEHLER 1820 (HY000): Sie müssen Ihr Kennwort mit der Anweisung ALTER USER zurücksetzen, bevor Sie diese Anweisung ausführen.

mysql> alter user 'root'@'localhost' identified by 'root';

Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)

mysql> flush privileges;

Abfrage OK, 0 Zeilen betroffen (0,03 Sek.)

sunling90
quelle
1

Wenn Sie es verwenden SET PASSWORD = PASSWORD('your_new_password');, kann es dafür abstürzen

(FEHLER 1819 (HY000): Ihr Passwort entspricht nicht den aktuellen Richtlinienanforderungen.)

Sie können es verwenden, SET GLOBAL validate_password_policy=LOW;um es zu schieben .

未来 陆家嘴 顶尖 的 投资 投资
quelle
1

in der Version 5.7. Das Feld 'Passwort' wurde gelöscht. 'authentication_string' ersetzt es

use mysql;
update user set authentication_string=password('123456') where user='root';
flush privileges;
HUAN LIU
quelle
0

Ich habe auch das gleiche Problem in Mac OS X 10.10.4 (Yosemite). SET PASSWORD funktioniert für mich. Alternatives Passwort für mysql-mysql> SET PASSWORD = PASSWORD ('your_password'); Abfrage OK, 0 Zeilen betroffen, 1 Warnung (0,01 Sek.)

Legen Sie Ihre Pfadvariable für die MySQL-Umgebung in .bash_profile fest und fügen Sie die folgende Zeile hinzu.
export PATH = $ PATH: / usr / local / mysql / bin. Führen Sie anschließend den folgenden Befehl aus: source .bash_profile

Moumita
quelle
0

Hatte das Problem, nachdem ich MySQL Workbench und MySQL Community Server installiert hatte. Wurde während der Serverinstallation ein Passwort generiert. Ein Doppelklick auf die vorhandene lokale Instanz in der Workbench löste einen Dialog aus, in dem ich das neue Kennwort festlegen konnte.

Malte
quelle
0

mysql> SET PASSWORD = PASSWORD('your_new_password'); Das ist für mich in Ordnung.

zhao
quelle
0

Denken Sie an Versionen 5.7.23 und höher. Die Benutzertabelle enthält kein Spaltenkennwort anstelle der Authentifizierungszeichenfolge. Die folgende Funktion funktioniert beim Zurücksetzen des Kennworts für einen Benutzer.

update user set authentication_string=password('root') where user='root';
Pravin
quelle