Nach der Neuinstallation mit Root-ID und leerem / keinem Kennwort kann ich mich nicht wie bei anderen älteren MySQL-Versionen bei der MySQL-Datenbank anmelden
root hat keine mehr, weil es keine verwendet. Standardmäßig ist die Auth-Methode Auth Socket. Verwenden Sie sudo, um mit Root-Zugriff zuzugreifen, ändern Sie die Auth-Methode in Kennwort und legen Sie ein Kennwort fest, wenn Sie ein Root-lmysql-Oogin ohne Root-Systemzugriff benötigen.
G. Martin
3
@ G.Martin Würde es Ihnen etwas ausmachen, diesen Kommentar zu einer Antwort mit detaillierteren Schritten zu erweitern? Ich denke, dies ist die Lösung, die ich verwenden möchte, aber ich weiß nicht, wie ich die Auth-Methode ändern soll. ( sudo mysql -u rootfunktioniert für mich - ich möchte es ändern, damit ich einfach mysql -u rootohne Passwort
Max Williams
Entschuldigung, Sie haben das wahrscheinlich schon herausgefunden, aber ich habe herausgefunden, dass mein Beitrag nur für Debian-Distributionen gilt. Wenn es immer noch ein Problem ist (bezweifle es), kann ich mehr Details liefern.
G. Martin
Antworten:
150
Es gibt so viele Antworten, die besagen, dass MySQL neu installiert oder eine Kombination aus verwendet werden soll
// For MySQL 5.7+
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') whereuser='root';
Dann:
mysql> FLUSHPRIVILEGES;
mysql> COMMIT; // When you don't have auto-commit switched on
mysql> EXIT
$ sudo service mysql restart
$ mysql -u root -p
Enter password: // Yay! 'new_password'now works!
Ich habe diese Schritte befolgt und es funktioniert bei mir nicht. Alles sieht gut aus, aber sobald ich MySQL neu starte, wird der Plugin-Wert auf zurückgesetzt auth_socket. Irgendeine Idee, was fehlt?
Matt Raible
4
Hat anfangs bei mir nicht funktioniert. Dann habe ich versucht, vor EXIT ein COMMIT auszugeben, und es hat funktioniert!
LeandroG
2
Arbeitete für mich, aber anstatt: mysql -u debian-sys-wart -p zu verwenden, musste ich verwenden: sudo mysql -u root. Als ich den ersten verwendete, wurden die Änderungen selbst mit COMMIT
Peter
2
Müssen commit;vorher machen FLUSH PRIVILEGES;.
Eric Wang
3
Habe das getestet. MySQL 5.7+, das standardmäßig mit 18.04 LTS installiert ist, ändert das Passwort mit, UPDATE mysql.user SET authentication_string=PASSWORD('new_password') where user='root';so dass Sie das anstelle vonALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Nachricht
109
Nachdem Sie MySQL-community-server 5.7 unter Linux installiert haben, müssen Sie das temporäre Kennwort aus /var/log/mysqld.log suchen, um sich als root anzumelden.
grep 'temporary password' /var/log/mysqld.log
Ausführen mysql_secure_installation, um ein neues Passwort zu ändern
Vielen Dank! Etwas verrückt, diese Informationen hier anstelle des MySQL 5.7-Dokuments von Oracle zu finden.
maddin2code
7
Das rettet mein Leben ... habe überall nach Lösungen gesucht und das löst mein ganzes Problem. Sogar das Dokument von der MySQL-Website erwähnte dies nicht. Das ist ein verrückter Mann. Vielen Dank!
Nodeffect
1
Wo würden Sie auf einem Windows-Computer suchen?
Rotaercz
21
/var/log/mysqld.log existiert nicht für mich (Mariadb auf Minze)
Donquixote
9
Für diejenigen, die das nicht finden können /var/log/mysqld.log, laufen Sie einfach sudo mysql_secure_installation. Denken Sie daran, diesen Befehl mit auszuführen, sudooder Sie erhalten den Fehler "Zugriff verweigert".
SarahCoding
31
MySQL 5.7 hat das sichere Modell geändert: Jetzt erfordert die MySQL-Root-Anmeldung ein Sudo
Die einfachste (und sicherste) Lösung besteht darin, einen neuen Benutzer zu erstellen und die erforderlichen Berechtigungen zu erteilen.
Um ehrlich zu sein, habe ich diese Antwort zunächst als ziemlich dumm verworfen und unzählige andere Dinge ausprobiert, einschließlich der Suche nach zufällig generierten Passwörtern in Dateien, die auf meinem lokalen Ubuntu-Computer nicht vorhanden waren. Ein einfaches SUDO und ein leeres Passwort haben es jedoch gerade getan. Habe eine positive Bewertung!
MrTony
14
MySQL Server 5.7 wurde bereits standardmäßig auf meinem neuen Linux Mint 19 installiert.
Aber wie lautet das MySQL- rootPasswort? Es stellt sich heraus, dass:
Die Standardinstallation verwendet die auth_socketAuthentifizierung anstelle von Passwörtern!
Es ermöglicht eine kennwortfreie Anmeldung, sofern eine mit demselben Benutzernamen am Linux-System angemeldet ist. Um sich als MySQL-Root useranzumelden, kann man sudo verwenden:
sudo mysql --user=root
Aber wie kann man dann das Root-Passwort ändern? Um zu veranschaulichen, was los ist, habe ich einen neuen Benutzer "ich" mit vollen Berechtigungen erstellt, mit:
Da auth_socket verwendet wird, kann das Root-Passwort nicht geändert werden: Der SET PASSWORDBefehl schlägt fehl und mysql_secure_installationes wird nichts erreicht ...
==> So zappen Sie diesen alternativen Authentifizierungsmodus und bringen den MySQL- rootBenutzer wieder zur Verwendung von Kennwörtern:
Wenn Sie MySQL oder Percona unbeaufsichtigt installieren möchten (wie in meinem Fall ansible), können Sie das folgende Skript verwenden:
# first part opens mysql log# second part greps lines with temporary password# third part picks last line (most recent one)# last part removes all the line except the password# the result goes into password variable
password=$(cat /var/log/mysqld.log | grep "A temporary password is generated for" | tail -1 | sed -n 's/.*root@localhost: //p')
# setting new password, you can use $1 and run this script as a file and pass the argument through the script
newPassword="wh@teverYouLikE"
# resetting temporary password
mysql -uroot -p$password -Bse "ALTERUSER'root'@'localhost'IDENTIFIEDBY'$newPassword';"
cat: /var/log/mysqld.log: No such file or directoryIch benutze Ubuntu 18.04 und habe es über tasksel installiert. Hast du einen vorschlag
AboElnouR
Ich würde danach suchen:find / -name mysqld 2>/dev/null
hpaknia
5
MySQL 5.7 oder neuer generiert nach der Neuinstallation ein temporäres Standardkennwort.
Um MySQL zuerst verwenden zu können, müssen Sie das Kennwort aus der Protokolldatei abrufen, die auf der Website vorhanden ist /var/log/mysqld.log. Befolgen Sie also den folgenden Prozess:
grep 'temporary password' /var/log/mysqld.log
mysql_secure_installation
Der zweite Befehl ist erforderlich, um das Kennwort für MySQL zu ändern und bestimmte andere Änderungen vorzunehmen, z. B. temporäre Datenbanken entfernen, Remotezugriff für Root-Benutzer zulassen oder nicht zulassen, anonyme Benutzer löschen usw.
Arbeitete an Ubuntu Bionic 18.04 Mysql 5.7.29. Ich dachte nur, ich würde die Versionen hinzufügen. Vielen Dank.
Gavin Simpson
3
Keine dieser Antworten funktionierte für mich unter Ubuntu Server 18.04.1 und MySQL 5.7.23. Ich habe einige Zeit damit verbracht, das Passwort und das Authentifizierungs-Plugin manuell festzulegen, das Passwort in Protokollen zu finden (es ist nicht vorhanden) usw.
Die Lösung ist eigentlich super einfach:
sudo mysql_secure_installation
Es ist wirklich wichtig, dies zu tun sudo. Wenn Sie es ohne Erhöhung versuchen, werden Sie nach dem Root-Passwort gefragt, das Sie offensichtlich nicht haben.
Nee. Es wurde entwickelt, um ein Kennwort für root anstelle eines leeren Kennworts festzulegen.
Ryan
1
Standardmäßig ist die Verbindung nur über einen lokalen Socket mit root möglich. In beiden Fällen ist es eine schlechte Praxis, root zu verwenden, um eine Verbindung zu MySQL herzustellen, selbst für Entwickler. In meiner Antwort wird beschrieben, wie eine gute Praxis zum Erstellen eines Nicht-Root-Benutzers verwendet wird, der tatsächlich funktioniert.
Pablo Pazos
1
Ich habe gerade Linux Mint 19 (basierend auf Ubuntu 18.04) auf meinem Computer installiert. Ich habe MySQL 5.7 vom Repo installiert ( sudo apt install mysql-server ) und überraschenderweise hat das Setup während der Installation nicht zur Eingabe des Root- Passworts aufgefordert . Infolgedessen konnte ich mich nicht bei MySQL anmelden. Ich habe hier und da gegoogelt und verschiedene Antworten ausprobiert, die ich im Internet gefunden habe, einschließlich der oben akzeptierten Antwort. Ich habe deinstalliert (alle dpkgs mit mysql im Namen löschen ) und erneut von den Standard-Linux Mint-Repositorys installiert. KEIN funktioniert.
Nach stundenlangen unproduktiven Arbeiten habe ich beschlossen, MySQL von der offiziellen Seite neu zu installieren. Ich habe die MySQL-Download-Seite ( https://dev.mysql.com/downloads/repo/apt ) für apt repo geöffnet und auf Download geklickt unten rechts auf die Schaltfläche .
Führen Sie es als Nächstes mit dpkg aus:
sudo dpkg -i mysql-apt-config_0.8.10-1_all.deb
Wählen Sie beim Installationssetup die MySQL-Version aus, die Sie installieren möchten. Die Standardoption ist 8.0, aber ich habe sie in 5.7 geändert. Klicken Sie zum Beenden auf OK. Danach haben Sie ein neues MySQL-Repo in Ihren Softwarequellen.
Aktualisieren Sie Ihr Repo:
sudo apt update
Installieren Sie abschließend MySQL:
sudo apt install mysql-server
Und jetzt wurde ich aufgefordert, das Root- Passwort anzugeben! Hoffe, es hilft für andere mit der gleichen Erfahrung.
Ich habe Tage damit verbracht, es während der Installation mysql-servervon Ubuntu Repo zu lösen, aber am Ende funktioniert offiziell das, was MySQL bietet.
Inam Ul Huq
0
In meinem Fall wurde das Datenverzeichnis automatisch mit der --initialize-insecureOption initialisiert . Enthält /var/log/mysql/error.logalso kein temporäres Passwort aber:
[Warnung] root @ localhost wird mit einem leeren Passwort erstellt! Bitte deaktivieren Sie die Option --initialize-unsicher.
Was funktionierte war:
shell> mysql -u root --skip-password
mysql> ALTERUSER'root'@'localhost'IDENTIFIEDBY'new_password';
sudo mysql -u root
funktioniert für mich - ich möchte es ändern, damit ich einfachmysql -u root
ohne PasswortAntworten:
Es gibt so viele Antworten, die besagen, dass MySQL neu installiert oder eine Kombination aus verwendet werden soll
mysqld_safe --skip-grant-tables
und / oder
UPDATE mysql.user SET Password=PASSWORD('password')
und / oder etwas anderes ...
... Nichts davon hat bei mir funktioniert
Hier ist, was für mich unter Ubuntu 18.04 von oben funktioniert hat
Mit besonderer Anerkennung für diese Antwort, dass sie mich aus der Frustration herausgeholt hat ...
$ sudo apt install mysql-server $ sudo cat /etc/mysql/debian.cnf
Beachten Sie die Zeilen, die lauten:
Dann:
$ mysql -u debian-sys-maint -p Enter password: // type 'blahblahblah', ie. password from debian.cnf mysql> USE mysql mysql> SELECT User, Host, plugin FROM mysql.user; +------------------+-----------+-----------------------+ | User | Host | plugin | +------------------+-----------+-----------------------+ | root | localhost | auth_socket | | mysql.session | localhost | mysql_native_password | | mysql.sys | localhost | mysql_native_password | | debian-sys-maint | localhost | mysql_native_password | +------------------+-----------+-----------------------+ 4 rows in set (0.00 sec) mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root'; mysql> COMMIT; // When you don't have auto-commit switched on
Entweder:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Oder:
// For MySQL 5.7+ UPDATE mysql.user SET authentication_string=PASSWORD('new_password') where user='root';
Dann:
mysql> FLUSH PRIVILEGES; mysql> COMMIT; // When you don't have auto-commit switched on mysql> EXIT $ sudo service mysql restart $ mysql -u root -p Enter password: // Yay! 'new_password' now works!
quelle
auth_socket
. Irgendeine Idee, was fehlt?commit;
vorher machenFLUSH PRIVILEGES;
.UPDATE mysql.user SET authentication_string=PASSWORD('new_password') where user='root';
so dass Sie das anstelle vonALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Nachdem Sie MySQL-community-server 5.7 unter Linux installiert haben, müssen Sie das temporäre Kennwort aus /var/log/mysqld.log suchen, um sich als root anzumelden.
grep 'temporary password' /var/log/mysqld.log
mysql_secure_installation
, um ein neues Passwort zu ändernref: http://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html
quelle
/var/log/mysqld.log
, laufen Sie einfachsudo mysql_secure_installation
. Denken Sie daran, diesen Befehl mit auszuführen,sudo
oder Sie erhalten den Fehler "Zugriff verweigert".MySQL 5.7 hat das sichere Modell geändert: Jetzt erfordert die MySQL-Root-Anmeldung ein Sudo
Die einfachste (und sicherste) Lösung besteht darin, einen neuen Benutzer zu erstellen und die erforderlichen Berechtigungen zu erteilen.
1. Stellen Sie eine Verbindung zu MySQL her
sudo mysql --user=root mysql
2. Erstellen Sie einen Benutzer für phpMyAdmin
CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'some_pass'; GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;
Referenz - /ubuntu/763336/cannot-enter-phpmyadmin-as-root-mysql-5-7
quelle
MySQL Server 5.7 wurde bereits standardmäßig auf meinem neuen Linux Mint 19 installiert.
Aber wie lautet das MySQL-
root
Passwort? Es stellt sich heraus, dass:Die Standardinstallation verwendet die
auth_socket
Authentifizierung anstelle von Passwörtern!Es ermöglicht eine kennwortfreie Anmeldung, sofern eine mit demselben Benutzernamen am Linux-System angemeldet ist. Um sich als MySQL-Root
user
anzumelden, kann man sudo verwenden:sudo mysql --user=root
Aber wie kann man dann das Root-Passwort ändern? Um zu veranschaulichen, was los ist, habe ich einen neuen Benutzer "ich" mit vollen Berechtigungen erstellt, mit:
mysql> CREATE USER 'me'@'localhost' IDENTIFIED BY 'my_new_password'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'me'@'localhost' WITH GRANT OPTION; mysql> FLUSH PRIVILEGES;
"Ich" mit "Wurzel" vergleichen:
mysql> SELECT user, plugin, HEX(authentication_string) FROM mysql.user WHERE user = 'me' or user = 'root'; +------+-----------------------+----------------------------------------------------------------------------+ | user | plugin | HEX(authentication_string) | +------+-----------------------+----------------------------------------------------------------------------+ | root | auth_socket | | | me | mysql_native_password | 2A393846353030304545453239394634323734333139354241344642413245373537313... | +------+-----------------------+----------------------------------------------------------------------------+
Da auth_socket verwendet wird, kann das Root-Passwort nicht geändert werden: Der
SET PASSWORD
Befehl schlägt fehl undmysql_secure_installation
es wird nichts erreicht ...==> So zappen Sie diesen alternativen Authentifizierungsmodus und bringen den MySQL-
root
Benutzer wieder zur Verwendung von Kennwörtern:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'SOME_NEW_ROOT_PASSWORD';
Eine gute Erklärung.
Weitere Details finden Sie im MySQL-Handbuch .
quelle
Wenn Sie MySQL oder Percona unbeaufsichtigt installieren möchten (wie in meinem Fall ansible), können Sie das folgende Skript verwenden:
# first part opens mysql log # second part greps lines with temporary password # third part picks last line (most recent one) # last part removes all the line except the password # the result goes into password variable password=$(cat /var/log/mysqld.log | grep "A temporary password is generated for" | tail -1 | sed -n 's/.*root@localhost: //p') # setting new password, you can use $1 and run this script as a file and pass the argument through the script newPassword="wh@teverYouLikE" # resetting temporary password mysql -uroot -p$password -Bse "ALTER USER 'root'@'localhost' IDENTIFIED BY '$newPassword';"
quelle
cat: /var/log/mysqld.log: No such file or directory
Ich benutze Ubuntu 18.04 und habe es über tasksel installiert. Hast du einen vorschlagfind / -name mysqld 2>/dev/null
MySQL 5.7 oder neuer generiert nach der Neuinstallation ein temporäres Standardkennwort.
Um MySQL zuerst verwenden zu können, müssen Sie das Kennwort aus der Protokolldatei abrufen, die auf der Website vorhanden ist
/var/log/mysqld.log
. Befolgen Sie also den folgenden Prozess:grep 'temporary password' /var/log/mysqld.log
mysql_secure_installation
Der zweite Befehl ist erforderlich, um das Kennwort für MySQL zu ändern und bestimmte andere Änderungen vorzunehmen, z. B. temporäre Datenbanken entfernen, Remotezugriff für Root-Benutzer zulassen oder nicht zulassen, anonyme Benutzer löschen usw.
quelle
Nach vielen Versuchen konnte ich das Standardkennwort mit den folgenden Befehlen (Ubuntu und Derivate) zurücksetzen:
sudo -i mkdir -p /var/run/mysqld chown mysql:mysql /var/run/mysqld /etc/init.d/mysql stop mysqld_safe --skip-grant-tables & mysql -uroot use mysql; update user set authentication_string=password('YOURPASSWORD') where user='root'; update user set plugin="mysql_native_password" where User='root'; flush privileges; quit; sudo /etc/init.d/mysql stop sudo /etc/init.d/mysql start
Manchmal sogar nach dem Eingeben im Terminal
mkdir -p /var/run/mysqld chown mysql:mysql /var/run/mysqld /etc/init.d/mysql stop mysqld_safe --skip-grant-tables &
Ich habe den Fehler erhalten, dass mysqld nicht existiert. Beenden Sie also und geben Sie dieselben Befehle erneut ein.
Und der letzte Befehl
sudo /etc/init.d/mysql start
Funktioniert manchmal nicht. Erst nach dem Neustart des Computers.
quelle
Keine dieser Antworten funktionierte für mich unter Ubuntu Server 18.04.1 und MySQL 5.7.23. Ich habe einige Zeit damit verbracht, das Passwort und das Authentifizierungs-Plugin manuell festzulegen, das Passwort in Protokollen zu finden (es ist nicht vorhanden) usw.
Die Lösung ist eigentlich super einfach:
Es ist wirklich wichtig, dies zu tun
sudo
. Wenn Sie es ohne Erhöhung versuchen, werden Sie nach dem Root-Passwort gefragt, das Sie offensichtlich nicht haben.quelle
Es scheint, dass die Dinge so konzipiert wurden, dass Entwickler den Root-Benutzer nicht sehen können. Eine bessere Lösung wäre:
Erstellen Sie dann einen normalen Benutzer, legen Sie ein Kennwort fest und verwenden Sie diesen Benutzer zum Arbeiten.
create user 'user'@'localhost' identified by 'user1234'; grant all on your_database.* to 'user'@'localhost'; select host, user from mysql.user;
Versuchen Sie dann, auf Folgendes zuzugreifen:
Boom!
quelle
Ich habe gerade Linux Mint 19 (basierend auf Ubuntu 18.04) auf meinem Computer installiert. Ich habe MySQL 5.7 vom Repo installiert ( sudo apt install mysql-server ) und überraschenderweise hat das Setup während der Installation nicht zur Eingabe des Root- Passworts aufgefordert . Infolgedessen konnte ich mich nicht bei MySQL anmelden. Ich habe hier und da gegoogelt und verschiedene Antworten ausprobiert, die ich im Internet gefunden habe, einschließlich der oben akzeptierten Antwort. Ich habe deinstalliert (alle dpkgs mit mysql im Namen löschen ) und erneut von den Standard-Linux Mint-Repositorys installiert. KEIN funktioniert.
Nach stundenlangen unproduktiven Arbeiten habe ich beschlossen, MySQL von der offiziellen Seite neu zu installieren. Ich habe die MySQL-Download-Seite ( https://dev.mysql.com/downloads/repo/apt ) für apt repo geöffnet und auf Download geklickt unten rechts auf die Schaltfläche .
Führen Sie es als Nächstes mit dpkg aus:
Wählen Sie beim Installationssetup die MySQL-Version aus, die Sie installieren möchten. Die Standardoption ist 8.0, aber ich habe sie in 5.7 geändert. Klicken Sie zum Beenden auf OK. Danach haben Sie ein neues MySQL-Repo in Ihren Softwarequellen.
Aktualisieren Sie Ihr Repo:
sudo apt update
Installieren Sie abschließend MySQL:
sudo apt install mysql-server
Und jetzt wurde ich aufgefordert, das Root- Passwort anzugeben! Hoffe, es hilft für andere mit der gleichen Erfahrung.
quelle
mysql-server
von Ubuntu Repo zu lösen, aber am Ende funktioniert offiziell das, was MySQL bietet.In meinem Fall wurde das Datenverzeichnis automatisch mit der
--initialize-insecure
Option initialisiert . Enthält/var/log/mysql/error.log
also kein temporäres Passwort aber:Was funktionierte war:
shell> mysql -u root --skip-password mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Details: MySQL 5.7 Referenzhandbuch> 2.10.4 Sichern des anfänglichen MySQL-Kontos
quelle
Ich hatte das gleiche Problem und das einzige, was ich tun konnte, um es zum Laufen zu bringen, war diesen Weg zu gehen:
drop user admin@localhost; flush privileges; create user admin@localhost identified by 'admins_password'
Dadurch konnte ich meinen Benutzernamen neu erstellen und ein Passwort für den Benutzernamen eingeben .
quelle
Ab Ubuntu 20.04 mit MySql 8.0 : Sie können das Passwort folgendermaßen festlegen:
Melden Sie sich bei MySQL mit an
sudo mysql -u root
Änder das Passwort:
Jetzt sollten Sie in der Lage sein, sich mit
mysql -u root -p
(oder mit dem Benutzernamen root bei phpMyAdmin) und Ihrem gewählten Passwort anzumelden.P, S:
Sie können sich auch mit dem Benutzer anmelden
debian-sys-maint
, das Passwort wird in die Datei geschrieben/etc/mysql/debian.cnf
quelle