Festlegen des MySQL-Root-Benutzerpassworts unter OS X.


235

Ich habe gerade MySQL unter Mac OS X installiert. Der nächste Schritt war das Festlegen des Root-Benutzerpassworts. Deshalb habe ich Folgendes getan:

  1. Starten Sie die Terminal-App, um auf die Unix-Befehlszeile zuzugreifen.
  2. Unter der Unix-Eingabeaufforderung habe ich folgende Befehle ausgeführt:

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

Aber wenn ich den Befehl ausführe

$ ./mysql -u root, das ist die Antwort:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 224
Server version: 5.5.13 MySQL Community Server (GPL)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Ich kann mysqlohne Passwort in die Kommandozeile gelangen !

Warum ist das?

Antworten:


320

Versuchen Sie den Befehl, FLUSH PRIVILEGESwenn Sie sich am MySQL-Terminal anmelden. Wenn dies nicht funktioniert, versuchen Sie die folgenden Befehle im MySQL-Terminal

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

Ändern Sie NEWPASSWORD mit einem beliebigen Passwort. Sollte fertig sein!

Update : Ab MySQL 5.7 wurde das passwordFeld umbenannt authentication_string. Verwenden Sie beim Ändern des Kennworts die folgende Abfrage, um das Kennwort zu ändern. Alle anderen Befehle bleiben gleich:

mysql> UPDATE user SET authentication_string=PASSWORD("NEWPASSWORD") WHERE User='root';

Update : Unter 8.0.15 (möglicherweise bereits vor dieser Version) funktioniert die Funktion PASSWORD () nicht, wie in den Kommentaren unten erwähnt. Sie müssen verwenden:

UPDATE mysql.user SET authentication_string='password' WHERE User='root';


24
Ab MySQL 5.7 hat sich der Spaltenname geändert. Sie müssen UPDATE mysql.user SET authentication_string=PASSWORD('password') WHERE User='root';stattdessen verwenden.
Carlos P

Danke für die Warnung. Ich werde meine Antwort entsprechend bearbeiten.
Scott

8
Es sieht auch so aus, als ob die PASSWORD () -Funktion veraltet ist und Sie sollten einfach die 'password'auf die rechte Seite der Gleichheit setzen
kvn

6
Wenn Sie sich jedoch nicht anmelden können, wie hilft dies?
Jake N

11
nachdem Sie diese Schritte ausgeführt haben. Als ich versuchte, mich erneut mit meinem neuen Passwort ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
anzumelden, bekam

197

Wenn Sie sich nicht an das Kennwort erinnern, das Sie für root festgelegt haben, und es zurücksetzen müssen, gehen Sie folgendermaßen vor:

  1. Stoppen Sie den mysqld-Server. Dies variiert je nach Installation
  2. Führen Sie den Server im abgesicherten Modus mit Berechtigungsumgehung aus

sudo mysqld_safe --skip-grant-tables;

  1. Stellen Sie in einem neuen Fenster eine Verbindung zur Datenbank her, legen Sie ein neues Kennwort fest und löschen Sie die Berechtigungen und beenden Sie:

mysql -u root

Für MySQL älter als MySQL 5.7 verwenden Sie:

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

Für MySQL 5.7+ verwenden Sie:

USE mysql;

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

Aktualisieren und beenden:

FLUSH PRIVILEGES;

\q

  1. Stoppen Sie den Server im abgesicherten Modus und starten Sie Ihren regulären Server wieder. Das neue Passwort sollte jetzt funktionieren. Hat wie ein Zauber für mich funktioniert :)

4
Das war perfekt, danke! Unter Mac OSx Mavericks (2014) verwenden Sie sudo / Library / StartupItems / MySQLCOM / MySQLCOM stop | start | restart
Chris Adams

2
passwordmuss authentication_stringjetzt sein.
zx1986

Nach MySQL 5.7 sollte es so sein UPDATE user SET authentication_string=PASSWORD("NEWPASSWORD") WHERE User='root';, wie @Scott sagte.
zx1986

Danke wird das hinzufügen
radtek

1
Unter MacOSx stellte ich bei der Installation von mySQL mit der Option "Einstellungsbereich" (Apple-Menü -> Systemeinstellungen ...) fest, dass ich mySQL zuerst über den Voreinstellungsbereich stoppen musste, um Schritt 1 der obigen Schritte auszuführen sudo kill Tat es nicht arbeiten, da der Mac OSx automatisch eine neue msql sofort neu starten würde. Sobald ich mysql über das Einstellungsfenster gestoppt hatte, konnte ich manuell ausführenmysqld_safe --skip-grant-tables
toddcscar

85

Sobald Sie MySQL installiert haben, müssen Sie das "root" -Kennwort festlegen. Wenn Sie kein Root-Passwort einrichten, gibt es kein Root-Passwort und Sie benötigen kein Passwort, um sich anzumelden.

Abgesehen davon müssen Sie ein Root-Passwort einrichten.

Geben Sie über das Terminal Folgendes ein:

Installation: Legen Sie das Root-Benutzerpasswort fest:

/usr/local/mysql/bin/mysqladmin -u root password NEW_PASSWORD_HERE

Wenn Sie einen Fehler gemacht haben oder das Root-Passwort ändern müssen, verwenden Sie Folgendes:

Root-Passwort ändern:

cd /usr/local/mysql/bin/
./mysql -u root -p
> Enter password: [type old password invisibly]

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

5
Für diejenigen, die MySQL 5.7 haben, sollten Sie update user set authentication_string=PASSWORD("NEW_PASSWORD_HERE") where User='root';anstelle vonset password=...
pdm

66

Die Anweisungen auf der MySQL-Website sind so klar wie die oben genannten

  1. $ sudo /usr/local/mysql/support-files/mysql.server stop
  2. $ sudo /usr/local/mysql/support-files/mysql.server start --skip-grant-tables
  3. /usr/local/mysql/bin/mysql
  4. mysql> FLUSH PRIVILEGES;
  5. mysql> ALTER USER 'root' @ 'localhost' IDENTIFIZIERT DURCH 'MyNewPass';
  6. mysql> exitoder Strg + z
  7. $ sudo /usr/local/mysql/support-files/mysql.server stop
  8. $ sudo /usr/local/mysql/support-files/mysql.server start
  9. /usr/local/mysql/support-files/mysql -u root -p
  10. Geben Sie das neue Passwort ein, dh MyNewPass

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


2
In Mac OS 10.12.6 wird nach dem 2. Befehl ERROR ein
DiEcho

Vielen Dank, dass Sie darauf hingewiesen haben, wo sich die Dokumentation befindet. Auf dem Mac ist es etwas verwirrend, wenn Sie auch sudo launchctl unload -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist und sudo launchctl unload -F /Library/LaunchDaemons/com.oracle.oss verwenden können .mysql.mysqld.plist zum Stoppen und Starten von mysql. Die Verwendung von sudo /usr/local/mysql/support-files/mysql.server stop scheint ein besserer Ansatz zu sein.
Daniel

59
  1. Stoppen Sie den mysqld-Server.

    • Mac OSX: System Preferences >MySQL >Stop MySQL Server
    • Linux (vom Terminal): sudo systemctl stop mysqld.service
  2. Starten Sie den Server im abgesicherten Modus mit Berechtigungsumgehung

    • Vom Terminal: sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  3. In einem neuen Terminalfenster:

    • sudo /usr/local/mysql/bin/mysql -u root
  4. Dadurch wird die MySQL-Befehlszeile geöffnet. Von hier aus eingeben:

    • UPDATE mysql.user SET authentication_string=PASSWORD('NewPassword') WHERE User='root';

    • FLUSH PRIVILEGES;

    • quit

  5. Stoppen Sie den mysqld-Server erneut und starten Sie ihn im normalen Modus neu.

    • Mac OSX (vom Terminal): sudo /usr/local/mysql/support-files/mysql.server restart
    • Linux Terminal: sudo systemctl restart mysqld

1
Für die Ausführung von 5.7.23 in High Sierra funktioniert dies perfekt. Vielen Dank.
Daniel

In MySQL 8.0.11 wurde die Set-Funktion im 4. Schritt entfernt. Sie überprüfen hier, dieser ist gearbeitet. stackoverflow.com/a/52579886/621951
Günay Gültekin

22

Für neue MySQL 5.7 aus irgendeinem Grund bin Befehle von MySQL nicht an die Shell angehängt:

  1. Starten Sie den Mac nach der Installation neu.

  2. Starten Sie MySQL:

    Systemeinstellungen> MySQL> Schaltfläche Start

  3. Gehen Sie zum MySQL-Installationsordner im Terminal:

    $ cd /usr/local/mysql/bin/

  4. Zugang zu MySQL:

    $ ./mysql -u root -p

und geben Sie das anfängliche Passwort für die Installation ein.

  1. Ändern Sie im MySQL-Terminal das Passwort:

    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPassword';


16

Schreiben Sie im Terminal mysql -u root -pund drücken Sie die Eingabetaste. Geben Sie das aktuelle MySQL-Passwort ein, das Sie notiert haben müssen. Und legen Sie das Passwort fest SET PASSWORD = PASSWORD('new_password');

Bitte beachten Sie diese Dokumentation hier für weitere Details.


10

Wenn Sie das MySQL-Root-Passwort vergessen haben, sich nicht erinnern können oder einbrechen möchten, können Sie das MySQL-Datenbank-Passwort über die Befehlszeile unter Linux oder OS X zurücksetzen, solange Sie das Root-Benutzer-Passwort der Box kennen Sie sind auf:

(1) Stoppen Sie MySQL

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

(2) Starten Sie es im abgesicherten Modus:

sudo mysqld_safe --skip-grant-tables

(3) 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

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

Ersetzen Sie im obigen UPDATE-Befehl einfach das 'Passwort' durch Ihr eigenes neues Passwort. Achten Sie darauf, die Anführungszeichen beizubehalten

(4) Speichern und ruhig

FLUSH PRIVILEGES;

\q

(5) Starten Sie MySQL

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

5

Als ich OS X Yosemite installiert habe, habe ich ein Problem mit MySQL. Ich habe viele Methoden ausprobiert, aber keine hat funktioniert. Ich habe tatsächlich einen ziemlich einfachen Weg gefunden. Probieren Sie es aus.

  1. Melden Sie sich zuerst mit su-Berechtigungen im Terminal an.

sudo su

  1. hör auf mysql

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

  1. im abgesicherten Modus starten:

sudo mysqld_safe --skip-grant-tables

  1. Öffnen Sie ein anderes Terminal, melden Sie sich als su-Berechtigungen an und melden Sie sich ohne Passwort bei MySQL an

mysql -u root

  1. Änder das Passwort

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

  1. Flush-Berechtigungen

FLUSH PRIVILEGES;

  1. Du bist jetzt fertig

Vielen Dank. Ich hatte ein bisschen damit zu kämpfen. Ist dies eine neue Sache in den neuesten Versionen von MySQL?
Jpbourbon



3

Ich denke das sollte funktionieren:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURNEWPASSWORD'

(Beachten Sie, dass Sie root wahrscheinlich durch Ihren Benutzernamen ersetzen sollten, wenn es nicht root ist.)


2

Stoppen von MySQL Server

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

Starten von MySQL im abgesicherten Modus

sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &

Ändern des Root-Passworts

/usr/local/mysql/bin/mysql -u root

use mysql;
UPDATE user SET authentication_string=PASSWORD('NEW_PASSWORD') WHERE user='root';
FLUSH PRIVILEGES;
exit

Testen

Lauf /usr/local/mysql/bin/mysql -u root

Geben Sie nun das neue Passwort ein, um MySQL zu verwenden.


2

Genau das hat bei mir funktioniert:

  1. Stellen Sie sicher, dass kein anderer MySQL-Prozess ausgeführt wird. Um dies zu überprüfen, gehen Sie wie folgt vor:

     a.From the terminal, run this command:
           lsof -i:3306 
       If any PID is returned, kill it using kill -9 PID
     b. Go To System Preferences > MySQL > check if any MySQL instances 
        are running, stop them.
  2. Starten Sie MySQL mit dem folgenden Befehl:

    sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  3. Das Kennwort für jeden Benutzer wird in der Tabelle mysql.user unter den Spalten User bzw. authentication_string gespeichert. Wir können die Tabelle aktualisieren als:

    UPDATE mysql.user SET authentication_string='your_password' where User='root'

2

macOS 10.14+ mit 5.7.26, installiert vom Mac OSX DMG-Installationsprogramm.

Wenn Sie versuchen, den von anderen Benutzern geposteten UPDATE-Befehl zu verwenden, wird der folgende Fehler angezeigt:

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

Kopieren Sie das Kennwort, das Ihnen vom offenen Terminal des Installationsprogramms angezeigt wurde, und gehen Sie wie folgt vor:

mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURPASSWORDHERE';


2

Um auf MySQL 8.0.15 + zu verweisen, ist die Funktion password () nicht verfügbar. Verwenden Sie den folgenden Befehl.

Bitte benutzen

UPDATE mysql.user SET authentication_string='password' WHERE User='root';

1

Wenn Sie Ihr Passwort vergessen haben oder es in Ihre MySQL ändern möchten:

  1. Starten Sie Ihr Terminal und geben Sie Folgendes ein:
sudo su
  1. Geben Sie den Pass für Ihr System ein
  2. Stoppen Sie Ihr MySQL:
sudo /usr/local/mysql/support-files/mysql.server stop
  1. Lassen Sie dieses Fenster offen, führen Sie das zweite Terminalfenster aus und geben Sie hier ein:
mysql -u root
  1. Und ändern Sie Ihr Passwort für MySQL:
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='root';

wo "new_password" - Ihr neuer Pass. Sie brauchen keinen alten Pass für MySQL.

  1. Spülen, beenden und überprüfen Sie Ihren neuen Pass:
FLUSH PRIVILEGES;
  1. Schließen Sie alle Fenster und überprüfen Sie Ihren neuen Pass auf MySQL. Viel Glück.

1

Für MySQL 8 hat sich viel geändert. Ich habe die folgende Modifikation der MySQL 8.0-Dokumentation "Zurücksetzen des Root-Passworts" gefunden unter Mac OS X funktioniert.

Erstellen Sie eine temporäre Datei $HOME/mysql.root.txtmit SQL, um das Root-Passwort zu aktualisieren:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<new-password>';

Dies wird verwendet mysql_native_password, um zu vermeiden, dass das Authentifizierungs-Plugin 'caching_sha2_password' nicht geladen werden kann. Dies wird angezeigt , wenn ich die Option weglasse.

Stoppen Sie den Server, beginnen Sie mit einer --init-fileOption zum Festlegen des Root-Passworts und starten Sie den Server neu:

mysql.server stop mysql.server start --init-file=$HOME/mysql.root.txt mysql.server stop mysql.server start


1

Fügen wir diese Problemumgehung hinzu, die auf meinem Laptop funktioniert!

Mac mit Osx Mojave 10.14.5

MySQL 8.0.17 wurde mit Homebrew installiert

  • Ich führe den folgenden Befehl aus, um den Pfad von MySQL zu finden

    brew info mysql

  • Sobald der Pfad bekannt ist, führe ich Folgendes aus:

    /usr/local/Cellar/mysql/8.0.17/bin/mysqld_safe --skip-grant-table

  • In einem anderen Terminal starte ich:

    mysql -u root

  • In diesem Terminal habe ich das Root-Passwort geändert mit:

    update mysql.user set authentication_string='NewPassword' where user='root';

  • und zum Schluss renne ich:

    FLUSH PRIVILEGES;

Und voila das Passwort wurde zurückgesetzt.

Verweise :


1

Sie können MySQL auf dem Mac manuell deaktivieren, indem Sie auf  Apple-Menü klicken und die Systemeinstellungen öffnen. Wählen Sie das Einstellungsfeld "MySQL" und klicken Sie auf die Schaltfläche "MySQL Server stoppen", um MySQL Server auf dem Mac zu stoppen.

Nachdem Sie Ihr MySQL gestoppt haben, müssen Sie diese Schritte ausführen.

  • Sie müssen MySQL im Modus "Skip-Grant-Tables" starten

$ sudo /usr/local/mysql/support-files/mysql.server start --skip-grant-tables

  • Geben Sie diesen Befehl in Ihrem Terminal selbst ein, um vorhandene PRIVILEGIEN ZU SPÜLEN

/ usr / local / mysql / bin / mysql mysql> FLUSH PRIVILEGES;

  • Jetzt müssen Sie das Benutzerkennwort ändern

mysql> ALTER USER 'root' @ 'localhost' IDENTIFIED BY 'newpassword';

mysql> exit

Dann können Sie zum  Apple-Menü gehen und die Systemeinstellungen öffnen. Wählen Sie das Einstellungsfeld "MySQL" und klicken Sie auf die Schaltfläche "MySQL Server stoppen", um MySQL Server auf dem Mac zu stoppen.

Schließlich können Sie wieder zum  Apple-Menü gehen und die Systemeinstellungen öffnen. Wählen Sie das Einstellungsfeld "MySQL" und klicken Sie auf die Schaltfläche "MySQL Server starten", um MySQL Server auf dem Mac zu starten.

hoffentlich hilft das


1

Keiner der vorherigen Kommentare löst das Problem auf meinem Mac. Ich habe die folgenden Befehle verwendet und es hat funktioniert.

$ brew services stop mysql
$ pkill mysqld
$ rm -rf /usr/local/var/mysql/ # NOTE: this will delete your existing database!!!
$ brew postinstall mysql
$ brew services restart mysql
$ mysql -u root

0
mysqld_safe --skip-grant-tables
mysql -u root
UPDATE mysql.user SET authentication_string='yourpasswd' WHERE User='root';
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';

Ich muss das irgendwie jedes Mal tun, wenn mein Macbook neu startet. Wenn Sie dies als persönliche Referenz veröffentlichen, hilft es hoffentlich auch jemand anderem.

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.