Ich habe gerade MySQL unter Ubuntu installiert und der Root-Benutzer kann sich nicht anmelden :)
Wie kann ich mein Passwort wiederherstellen oder herausfinden? Die Verwendung von blank für Passwort funktioniert nicht.
Antworten:
Sie können das Root-Passwort zurücksetzen, indem Sie den Server mit --skip-grant-tables
ausführen und sich ohne Passwort anmelden, indem Sie Folgendes als root (oder mit sudo) ausführen:
# service mysql stop
# mysqld_safe --skip-grant-tables &
$ mysql -u root
mysql> use mysql;
mysql> update user set authentication_string=PASSWORD("YOUR-NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit
# service mysql stop
# service mysql start
$ mysql -u root -p
Jetzt sollten Sie sich mit Ihrem neuen Passwort als root anmelden können.
Es ist auch möglich, die Abfrage zu finden, mit der das Kennwort zurückgesetzt wurde, /home/$USER/.mysql_history
oder /root/.mysql_history
den Benutzer, der das Kennwort zurückgesetzt hat. Die oben genannten Abfragen funktionieren jedoch immer.
Hinweis: Vor MySQL 5.7 wurde die Spalte password
anstelle von aufgerufen authentication_string
. Ersetzen Sie die obige Zeile durch
mysql> update user set password=PASSWORD("YOUR-NEW-ROOT-PASSWORD") where User='root';
dpkg
ich all dies viele Male und den folgenden Ansatz ausprobiert hatte und sehr frustriert war, dass nichts funktionierte (übrigens verwende ich 16.04 mit mysql-sever-5.7
), bemerkte ich, dass MySQL meine neuen Anmeldeinformationen akzeptieren würde, wenn ich sudo zum Verbinden verwenden würde. dh sudo mysql -u root -p
ohne sudo bekomme ich Access denied for user 'root'@'localhost'
. Ich musste Sudo noch nie verwenden, und ich sehe es hier nicht erwähnt, aber nach einer frustrierenden Stunde scheint das die Lösung zu sein.
sudo
MySQL verwenden und jetzt muss ich? Ich verstehe nicht, warum ich der Root-Linux-Benutzer sein muss, um auf das Root-Konto in MySQL zuzugreifen. Diese Art von Verhalten erinnert mich ein bisschen mehr an postgresql.
Mir ist klar, dass dies ein alter Thread ist, aber ich dachte, ich würde ihn mit meinen Ergebnissen aktualisieren.
Alex, es hört sich so an, als hätten Sie den MySQL-Server über das Metapaket 'mysql-server' installiert. Dadurch wird das neueste Paket als Referenz installiert (in meinem Fall mysql-server-5.5). Ich wurde wie Sie beim Einrichten nicht wie erwartet zur Eingabe eines MySQL-Passworts aufgefordert. Ich nehme an, es gibt zwei Antworten:
Lösung 1: Installieren Sie MySQL unter dem vollständigen Namen:
$ sudo apt-get install mysql-server-5.5
Oder
Lösung 2: Konfigurieren Sie das Paket neu ...
$ sudo dpkg-reconfigure mysql-server-5.5
Sie müssen den vollständigen Paketnamen angeben. Die Verwendung des Metapakets 'mysql-server' hatte für mich nicht das gewünschte Ergebnis. Ich hoffe das hilft jemandem :)
Referenz: https://help.ubuntu.com/12.04/serverguide/mysql.html
sudo dpkg-reconfigure mysql-server
, aber das hat nicht funktioniert.
sudo dpkg-reconfigure mysql-server-5.7
sudo mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YOUR_PASSWORD_HERE';
FLUSH PRIVILEGES;
mysql -u root -p # and it works
5.7.27
.
MySQL 5.5 unter Ubuntu 14.04 erforderte etwas andere Befehle, wie hier empfohlen . In einer Nussschale:
sudo /etc/init.d/mysql stop
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
mysql -u root
Und dann von der MySQL-Eingabeaufforderung
FLUSH PRIVILEGES;
SET PASSWORD FOR root@'localhost' = PASSWORD('password');
UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
FLUSH PRIVILEGES;
Und die zitierte Quelle bietet auch eine alternative Methode.
--skip-grant-tables --skip-networking &
Es war sehr hilfreich für mich, Kundenanfragen zu beantworten, aber ich möchte mehr darüber erfahren, damit ich das Risiko einschätzen kann. Vielen Dank!
skip-grant-tables
Dies erfordert sicherlich Vorsicht, da jeder, der Zugriff auf den Server hat, auf alle Schemas für die Instanz zugreifen kann. skip-networking
ist meiner Meinung nach weniger problematisch, aber Sie sollten es selbst beurteilen. Wenn ich versuche, das Root-Passwort ohne das aktuelle Root-Passwort zurückzusetzen, betrachte ich mich bereits als Sicherheitsgurke :). Ich bin mir nicht sicher, ob es einen "sichereren" Ansatz gibt.
Für RHEL-mysql 5.5:
/etc/init.d/mysql stop
/etc/init.d/mysql start --skip-grant-tables
mysql> UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;
mysql -uroot -pnewpwd
mysql>
Hmm Mysql 5.7.13, um alles zurückzusetzen, was ich getan habe, war:
$ sudo service mysql stop
MySQL zu stoppen
$ mysqld_safe --skip-grant-tables &
Starten Sie MySQL
$ mysql -u root
Genau wie die richtige Antwort. Dann habe ich nur noch das getan, was @eebbesen getan hat.
mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('NEW-password-HERE');
Hoffe es hilft jemandem da draußen :)
Hier ist der beste Weg, um Ihr Root-Passwort festzulegen: Source Link Schritt 3 funktioniert perfekt für mich.
Befehle für Sie
- sudo mysql
- SELECT Benutzer, Authentifizierungszeichenfolge, Plugin, Host FROM mysql.user;
- ALTER USER 'root' @ 'localhost' IDENTIFIZIERT MIT mysql_native_password BY 'password';
- SPÜLPRIVILEGIEN;
- SELECT Benutzer, Authentifizierungszeichenfolge, Plugin, Host FROM mysql.user;
- Ausfahrt
Jetzt können Sie das Passwort für den Root-Benutzer verwenden: ' Passwort ':
- mysql -u root -p
- CREATE USER 'sammy' @ 'localhost' IDENTIFIED BY 'password';
- GEWÄHRLEISTEN SIE ALLE PRIVILEGIEN . TO 'sammy' @ 'localhost' MIT GRANT OPTION;
- SPÜLPRIVILEGIEN;
- Ausfahrt
Testen Sie Ihren MySQL-Dienst und Ihre Version:
systemctl status mysql.service
sudo mysqladmin -p -u root version
Wenn Sie unter MYSQL 5.7 MySQL für Entwicklungszwecke verwenden, gehen Sie einfach wie folgt vor:
1.kill mysql:
$ sudo service mysql stop
2.Starten Sie MySQL im Modus --skip-grant-tables:
$ sudo mysqld_safe --skip-grant-tables
und außerdem könnten Sie versuchen, die Benutzertabelle im Modus "Skip-Grant-Tabelle" zu ändern, aber ich bin gescheitert.
Dies ist also nur eine Problemumgehung.
Es gibt eine einfache Lösung.
MySql 5.7 wird mit einem anonymen Benutzer geliefert, sodass Sie den MySQL-Server neu konfigurieren müssen.
Sie können dies mit diesem Befehl tun
versuchen Sie, einen temporären Pass zu finden:
grep 'temporary password' /var/log/mysqld.log
dann:
sudo mysql_secure_installation
Unter diesem Link finden Sie weitere Informationen zu MySQL 5.7
https://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html
Es ist eigentlich sehr einfach. Sie müssen nicht viel durchmachen. Führen Sie einfach den folgenden Befehl im Terminal aus und befolgen Sie die Anweisungen auf dem Bildschirm.
sudo mysql_secure_installation