MacOSX Homebrew MySQL Root Passwort

116

Aus irgendeinem Grund hat MySQL den Zugriff für root eingestellt. Mit Homebrew deinstalliert und neu installiert. Neu installieren, frische Tische aber wenn ich eintrete

mysql -u root -p

Ich erhalte diesen Fehler:

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

Ich habe MySQL fünf Mal neu installiert, aber es wird immer noch nach einem Passwort gefragt. Wie behebe ich das?

Alisher Ulugbekov
quelle
Es gibt fast eine genaue Frage im Superuser. Befolgen Sie diese Schritte: superuser.com/a/400345
Icarus
13
Laufen Sie einfach mysql_secure_installationund beantworten Sie die gestellten Fragen, einfach
Abhinav Singh
8
Der Befehl mysql_secure_installation fordert zur Eingabe eines Root-Passworts auf. Wenn Sie es eingestellt und vergessen haben, hilft dieses Verfahren nicht weiter.
JohnG
1
Wenn Brew
mrucci
FWIW mysql -u rootarbeitete hier ...
Rogerdpack

Antworten:

115

Führen Sie einfach diesen Befehl aus (wo NEWPASSist Ihr Passwort):

$(brew --prefix mysql)/bin/mysqladmin -u root password NEWPASS

Ich habe den gleichen Fehler gehabt und ihn auf diese Weise behoben.

Egermano
quelle
16
Hat für mich gearbeitet. Offensichtlich (vielleicht) muss das Dollarzeichen ($) als Teil des Befehls eingegeben werden (es ist nicht nur eine Shell-Eingabeaufforderung).
Kochfelder
2
@BrentFoust Natürlich. Ich habe die Verwendung des $Zeichens am Anfang eines Befehlszeilen-Shell-Befehls eindeutig definiert. Andere sind möglicherweise verwirrt, da das $Zeichen in SO und anderen Foren häufig als Shell-Eingabeaufforderungsmarkierung verwendet wird. Aber das Fehlen eines Zwischenraums zwischen $und (sollte auch die Leute darauf hinweisen.
Kochfelder
3
Ich würde empfehlen, NEWPASS nicht in den Befehl aufzunehmen, um das Speichern in der Verlaufsdatei Ihrer Shell zu vermeiden. Dieser Befehl fordert automatisch zur Eingabe auf, wenn Sie ihn ohne Pass ausführen, sodass kein Grund dafür vorliegt. :)
Levi Figueira
4
Wenn Sie Mariadb verwenden:$(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS
Bryceadams
8
Funktioniert bei mir nicht mit mariadb (auch mit @ bryceadams note): / usr / local / opt / mariadb / bin / mysqladmin: Verbindung zum Server bei 'localhost' fehlgeschlagen Fehler: 'Zugriff für Benutzer' root '@' localhost verweigert ' '
Trainoasis
110

Nichts davon hat bei mir funktioniert. Ich glaube, ich hatte MySQL bereits irgendwo auf meinem Computer, also wurde dort ein Passwort festgelegt oder so. Nachdem ich stundenlang jede Lösung ausprobiert hatte, funktionierte Folgendes für mich:

$ 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 -uroot

Alle Ehre gebührt @Ghrua

stackPusher
quelle
6
Die vorherigen Beiträge haben bei mir nicht funktioniert, aber dieser, während er destruktiv war, hat großartig funktioniert.
Clay
1
Wenn Sie irgendwann bei MySQL angemeldet sind, verwenden Sie ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURNEWPASSWORD';, um Ihr neues Root-Passwort festzulegen.
Martin Braun
Dies funktionierte für mich, ohne meine vorhandene Datenbank zu löschen
Mwirabua Tim
Endlich eine richtige Arbeitslösung. @ 2020 MacOs Catalina.
Mindaugas Kurlys
Dies funktionierte bei mir, als die vorherige Lösung dies nicht tat. Danke dir!
Les Brown
65

Falls Sie versehentlich das Root-Passwort festgelegt und vergessen haben und nicht alle Ihre Datenbanken löschen und neu beginnen möchten, weil Sie faul sind und vergessen haben, eine Sicherungslösung zu haben, und Sie eine relativ neue Homebrew-Installation verwenden (Winter 2013), hier sind Schritte zum Zurücksetzen Ihres Passworts für MySQL.

Stoppen Sie die aktuell ausgeführte MySQL-Instanz

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

Starten Sie nun MySQL, indem Sie die Grant-Tabellen und das Netzwerk von Hand überspringen

$(brew --prefix mysql)/bin/mysqld_safe --skip-grant-tables --skip-networking

Beachten Sie, dass Sie den Pfad entsprechend anpassen müssen , wenn Sie echo $ (brown --prefix mysql) ausführen und es in bash nicht als "/ usr / local / opt / mysql" antwortet .

Sobald Sie dies getan haben, sollten Sie jetzt eine laufende, ungeschützte MySQL-Instanz haben.

Melden Sie sich an und legen Sie das Passwort fest

mysql -u root

Geben Sie an der Eingabeaufforderung den folgenden MySQL-Befehl ein, um ein neues Kennwort für den betroffenen Benutzer festzulegen.

mysql> update mysql.user set password=PASSWORD('new_password_here') WHERE user='root';

Wenn alles nach Plan lief, sollte es heißen:

Query OK, 1 row affected (0.02 sec)
Rows matched: 4  Changed: 1  Warnings: 0

Beenden Sie die MySQL-Eingabeaufforderung.

mysql> exit
Bye

Server stoppen:

mysqladmin -u root shutdown

Lassen Sie uns nun den Startdämon zurücksetzen, damit wir MySQL wieder bereit haben:

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

Herzliche Glückwünsche. Sie haben gerade Ihr MySQL-Root-Passwort zurückgesetzt. Gießen Sie sich einen Kaffee ein und erhalten Sie eine Backup-Lösung!

ablemike
quelle
5
So stoppen Sie den ungeschützten MySQL-Server nach dem Ändern des Kennworts:mysqladmin -u root shutdown
Vebjorn Ljosa
9
Ich bin gerade auf dieses Problem gestoßen und fand diese Antwort am nächsten. Ich habe festgestellt, dass dies passwordkeine gültige Spalte in MySQL 5.7.9 ist. Stattdessen musste ich authentication_stringstattdessen verwenden. Der Rest der Anleitung funktionierte perfekt. Vielen Dank!
M. Scott Ford
5
Wie M. Scott Ford sagte, ist der richtige Befehl:update user set authentication_string=password('new_password_here') where user='root';
Panayotis
3
Ich musste rennen, update mysql.user set authentication_string=password('none') where user='root';damit es funktionierte. (Wie der Kommentar direkt über mir, aber prepend mysql.zu user.)
Steve Meisner
2
Die Passwortfunktion wurde seit MySQL 8.0.11 entfernt. Details mehr
chancyWu
62

Ich hatte vor ein paar Tagen das gleiche Problem. Dies geschieht, wenn Sie mysqlüber homebrewdas Initialisierungsskript ( mysql_install_db) installieren und ausführen, bevor Sie den mysqlDämon starten .

Um dies zu beheben, können Sie mysqlDatendateien löschen , den Dienst neu starten und dann das Initialisierungsskript ausführen:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
rm -r /usr/local/var/mysql/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
unset TMPDIR
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
Britto
quelle
hat perfekt für mich funktioniert. Ich möchte eigentlich kein Passwort für meinen lokalen Computer festlegen, daher sind die anderen Lösungen nicht wirklich das, wonach ich suche
Brad
3
mysql_install_db ist veraltet, erwägen Sie die Verwendung vonmysqld --initialize
Brian
1
Ich bekomme nur, No such file or directorywenn ich diesen ersten Befehl ausführe.
Agent Zebra
1
Nachdem Sie den Befehl mysqld --initialize ausgeführt haben, werden Sie in der Protokollmeldung auf der Konsole feststellen, dass das temporäre Kennwort für den Root-Benutzer festgelegt wurde. Kopieren Sie dieses und verwenden Sie das Kennwort, wenn Sie das nächste Mal den Befehl "mysql -uroot -p" auslösen. Es wird definitiv funktionieren. . und dann werden Sie von MySQL
aufgefordert,
@ VikrantLabde "Es wird definitiv funktionieren" - sehr ehrgeizige Aussage. Ich habe dies versucht, das temporäre Passwort verwendet, das es mir gegeben hat, aber es hat immer noch keinen Zugriff gewährt. Mussten Sie der Interpunktion mit einem Backslash entkommen?
Max Goodridge
47

Ich habe diesen Fehler nach der Installation von MySQL über Home Brew erhalten.

Entfernen Sie also zuerst die Installation. Dann über Homebrew neu installieren

brew update
brew doctor
brew install mysql

Starten Sie dann den MySQL-Dienst neu

 mysql.server restart

Führen Sie dann diesen Befehl aus, um Ihr neues Root-Passwort festzulegen.

 mysql_secure_installation

Schließlich werden Sie aufgefordert, die Berechtigungen neu zu laden. Sag ja. Dann melden Sie sich erneut bei MySQL an. Und verwenden Sie das neue Passwort, das Sie festgelegt haben.

mysql -u root -p
Nirojan Selvanathan
quelle
1
Dies ist die perfekte Lösung. Ich hatte bereits versucht zu laufen, mysql_secure_installationaber der Schlüssel war dermysql.server restart
Johan
mysql_secure_installation war das Schlüsselstück
Nik
Um Kopfschmerzen zu vermeiden ... geben Sie einfach den Befehl restart ein, wie nirojan sagt, und führen Sie dann mysql_secure_installation
Dan Zuzevich
13

Wenn du läufst

brew install mariadb
...
brew services start mariadb
==> Successfully started `mariadb` (label: homebrew.mxcl.mariadb)

 $(brew --prefix mariadb)/bin/mysqladmin -u root password newpass
/usr/local/opt/mariadb/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost''

Auch die Anmeldung mit dem Root-Konto schlägt fehl:

mariadb -u root
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

Anschließend wird der Standardadministrator mit demselben Namen wie der Benutzername Ihres MacOS- Kontos erstellt , z . B. johnsmit .

Um sich als root anzumelden, gehen Sie wie folgt vor:

mariadb -u johnsmit
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 17
Server version: 10.4.11-MariaDB Homebrew

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

MariaDB [(none)]> exit
Bye
Arunas Bartisius
quelle
Der Name des MacOS-Kontos hat es für mich getan.
Dan
Kann ich ein Passwort für den Benutzer des MacOS-Kontonamens hinzufügen?
OrigamiEye
7

Das hat bei mir funktioniert:

sudo mysql -u root
Béatrice Cassistat
quelle
4

Ich habe gerade etwas Gemeinsames bei den meisten Antworten hier bemerkt und bei meiner Neuinstallation bestätigt. Es ist tatsächlich offensichtlich, wenn Sie sich die Empfehlungen ansehen, auf die Sie mysqladmin -u rootverzichten sollten-p .

Es gibt kein Passwort.

Brew richtet MySQL mit nur einem Root-Benutzer und ohne Passwort ein. Das macht wohl Sinn, aber die Caveats nach der Installation erwähnen es überhaupt nicht.

Spyder
quelle
2
Ich hatte das Problem mit der Zugriffsverweigerung unter der Annahme, dass kein Root-Passwort vorliegt, daher glaube ich nicht, dass das Problem offensichtlich ist.
Jack Frost
Ich sage nicht, dass das Problem offensichtlich ist; Für jeden, der MySQL unter normalen Umständen verwendet hat, ist dies äußerst verwirrend. Aber wenn man sich die anderen Antworten ansieht, ist der Grund klar.
Spyder
3

Versuchen Sie mit sudo, um den Fehler "Zugriff verweigert" zu vermeiden:

sudo $(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS

Matias Miranda
quelle
2
  1. Gehen Sie zu Apple Icon -> Systemeinstellungen
  2. Öffnen Sie MySQL
  3. In einigen Fällen wird "Datenbank initialisieren" angezeigt.
  4. Klicken Sie darauf
  5. Sie werden aufgefordert, das Passwort für root festzulegen -> legen Sie dort ein sicheres Passwort fest
  6. Verwenden Sie dieses Passwort, um sich ab dem nächsten Mal bei MySQL anzumelden

Hoffe das hilft.

user3325650
quelle
Einfach und leicht. Vielen Dank.
Ezequiel França
2

Da die Frage vor langer Zeit gestellt / beantwortet wurde, funktionieren diese Top-Antworten bei mir nicht. Hier ist meine Lösung im Jahr 2020.

Hintergrund : Frisches MySQL / Mariadb von Homebrew installiert.

Problem : Das Passwort für root ist nicht leer und unbekannt.

Das Update :

  1. mysql -u IHR SYSTEM-BENUTZERNAME -p
  2. Das Passwort ist leer (drücken Sie die Eingabetaste)
  3. ALTER USER 'root' @ 'localhost' IDENTIFIZIERT DURCH 'NEW-ROOT-PASSWORD';
  4. SPÜLPRIVILEGIEN;

Der Grund :

  1. Homebrew erstellt einen Benutzer mit Root-Rechten, die nach dem aktuellen MacOS-Benutzernamen benannt sind.
  2. Es hat kein Passwort
  3. Da es alle Berechtigungen hat, setzen Sie einfach das Root-Passwort mit diesem Benutzer zurück.
  4. Das anfängliche Passwort für root wurde zufällig generiert.
Shiji.J
quelle
2020 richtige Antwort. Ich kann nicht nach einem Passwort für den MacOS-Benutzernamen
fragen
1

Das Ausführen dieser Leitungen im Terminal hat den Trick für mich und mehrere andere getan, die das gleiche Problem hatten. Diese Anweisungen werden im Terminal aufgelistet, nachdem Brew MySQL erfolgreich installiert hat.

mkdir -p ~/Library/LaunchAgents

cp /usr/local/Cellar/mysql/5.5.25a/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

/usr/local/Cellar/mysql/5.5.25a/bin/mysqladmin -u root password 'YOURPASSWORD'

Wo YOURPASSWORDist das Passwort für root?

Erin
quelle
Ich bekomme nur, No such file or directorywenn ich diese Befehle ausführe
Agent Zebra
1

Stellen Sie sicher, dass sich in Ihrem Homedir keine .my.cnf versteckt. Das war mein problem

user8845989
quelle
1

Dies funktionierte bei mir für MAC https://flipdazed.github.io/blog/osx%20maintenance/set-up-mysql-osx

Starten Sie MySQL, indem Sie ausführen

Brauservices starten MySQL

Führen Sie das Installationsskript aus

mysql_secure_installation

Sie werden aufgefordert, ein Setup-Plugin für VALIDATE PASSWORD einzurichten. Geben Sie dazu y ein.

Wählen Sie die gewünschte Kennwortüberprüfung aus (spielt keine Rolle, wenn Sie nur die Datenbank verwenden).

Wählen Sie nun y für alle verbleibenden Optionen: Entfernen Sie anon. Benutzer; Remote-Root-Anmeldungen nicht zulassen; Testdatenbank entfernen; Berechtigungstabellen neu laden. Jetzt sollten Sie eine Nachricht von erhalten

All done!

Katie Lee
quelle
Um
MySQL
1

Das hat bei mir funktioniert. Hoffentlich funktioniert das auch bei dir !!! Folge ihnen.

brew services stop mysql
pkill mysqld
# NB: the following command will REMOVE all your databases!
# Make sure you have backups or SQL dumps if you have important data in them already.
rm -rf /usr/local/var/mysql/
brew services restart mysql

mysql -uroot
UPDATE mysql.user SET authentication_string=null WHERE User='root';
FLUSH PRIVILEGES;
exit;

mysql -u root 
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password 
BY'YOUR_PASS_WORD!!!!';
heyfranksmile
quelle
2
Sie müssen warnen, dass durch Ausführen des rm -rf /usr/local/var/mysql/Befehls alle Datenbanken und MySQL-Daten auf Ihrem Computer gelöscht werden!
Lashae
0

Das Standardkennwort bei der Installation von MySQL über Brew lautet root. Versuchen Sie dies. Es hat bei mir funktioniert

mysql -uroot -proot

user3805033
quelle
1
Von brew info mysql: Wir haben Ihre MySQL-Datenbank ohne Root-Passwort installiert. Um es zu sichern, führen Sie
Folgendes aus
@ssc Der beste Weg, um ein Kennwort für eine Neuinstallation festzulegen.
Alexventuraio
0

Schalter 1:

$ mysql_safe

Terminal 2:

$ mysql -u root
mysql> UPDATE mysql.user SET Password=PASSWORD('new-password') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit
Dnyanesh Ghadge
quelle
Dies hat möglicherweise zum Zeitpunkt der Veröffentlichung der Antwort funktioniert, ist jedoch in der Zwischenzeit fehlerhaft. Mit (aktueller) MySQL-Version 5.7.21 schlägt dies mit "Unbekannte Spalte" Passwort "in" Feldliste "fehl.
SSC
UPDATE mysql.user SET authentication_string = PASSWORD ('xxxxxx!') WHERE User = 'root';
Kevin
0

Ich benutze Catalina und benutze diesen mysql_secure_installationBefehl und arbeite jetzt für mich:

$ mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): << enter root here >>

Ich gebe rootals aktuelles Passwort ein

OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

und mach den Rest

Agus Sudarmanto
quelle
0

Für den Fall, dass jemand die gleiche Situation und Konfiguration wie ich hat und auch verrückt wird - das hat bei mir funktioniert .

Nach einer langen Geschichte hatte ich eine von Brew gebaute MariaDB, die automatisch neu gestartet wurde, wenn ich ihren Prozess abbrach (das war Brew's Doing), was hatte ein Root - Passwort, das ich habe nicht wissen.

$ brew services list

Dies zeigt so etwas wie:

mariadb started jdoe /path/to/homebrew.mxcl.mariadb.plist

Stoppen Sie den MySQL-Server mit:

$ brew services stop mariadb

Dann starten Sie es erneut ohne den Root-Benutzer (und ohne Brew):

$ mariadbd --skip-grant-tables &

Hier mysql_secure_installationhat bei mir wegen der --skip-grant-tablesnicht funktioniert, und es würde ohne die nicht funktionieren--skip-grant-tables weil es das Passwort brauchte (das ich nicht hatte).
Der Versuch $(brew --prefix mysql)/bin/mysqladmin -u root password hunter2ergab nur seltsame Fehler und tat nichts; $(brew --prefix mariadb)/bin/mysqladmin -u root password hunter2funktionierte auch nicht, gab verschiedene Fehler und Vorschläge, die für mich nicht funktionierten.

Aber du können sich jetzt jedoch ohne Anmeldeinformationen bei MySQL anmelden:$ mysql

Hier funktioniert die alte Methode zum Aktualisieren der Benutzertabelle für root nicht, da "Spalte 'Passwort' nicht aktualisierbar ist".
Die neue Methode verwendet alter userABER funktioniert erst, nachdem Sie dies zuerst getan flush privileges;haben.
Dann:
MariaDB [(none)]> alter user 'root'@'localhost' identified by 'hunter2';
( MariaDB [(none)]>ist die MySQL-Eingabeaufforderung hier)
Dann flush privileges;wiederholen Sie .
Beenden Sie den MySQL-Client.

Was das Brauen betrifft, läuft MariaDB immer noch nicht, und verwenden Sie es $ ps aux | grep -i mariadb, um die PID und $ kill -9 <pid>sie zu finden .
Dann verwenden Sie $ brew services start mariadb, um es erneut zu starten.

MSpreij
quelle
-1

Verwenden Sie die Init-Datei, um MySQL zu starten und das Root-Passwort zu ändern.

brew services stop mysql
pkill mysqld
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'newRootPass';" > /tmp/mysql-init
$(brew --prefix mysql)/bin/mysqld --init-file=/tmp/mysql-init

Ihr Root-Passwort wurde jetzt geändert. Stellen Sie sicher, dass der Server ordnungsgemäß heruntergefahren wird , um die Kennwortänderung zu speichern. Im neuen Terminalfenster ausführen

mysqladmin -u root -p shutdown

und geben Sie Ihren neuen Pass ein.

Starten Sie Ihren Dienst und entfernen Sie die Init-Datei

brew services start mysql
rm /tmp/mysql-init

Getestet auf MySQL Version 8.0.19

Sten
quelle