Anmeldung bei MySQL-Datenbank nach Neuinstallation mit Root-ID und leerem/keinem Kennwort nicht möglich, wie dies bei anderen älteren MySQL-Versionen der Fall ist
Nachdem Sie MySQL-community-server 5.7 von fresh unter Linux installiert haben, müssen Sie das temporäre Kennwort in /var/log/mysqld.log suchen, um sich als root anzumelden.
grep 'temporary password' /var/log/mysqld.log
mysql_secure_installation
, um das neue Passwort zu ändernref: http://dev.mysql.com/doc/refman/5.7/de/linux-installation-yum-repo.html
Es gibt so viele Antworten auf die Frage, ob Sie mysql neu installieren oder eine Kombination aus verwenden sollen
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 an diese Antwort dafür, dass sie mich aus der Frustration darüber herausgeholt haben ...
$ Sudo apt install mysql-server
$ Sudo cat /etc/mysql/debian.cnf
Beachten Sie die Zeilen, die lauten:
user = debian-sys-maint
password = blahblahblah
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!
MySQL 5.7 hat das sichere Modell geändert: Für die Anmeldung als MySQL-Root ist jetzt ein Sudo erforderlich
Die einfachste (und sicherste) Lösung ist das Erstellen eines neuen Benutzers und das Gewähren der erforderlichen Berechtigungen.
1. Mit MySQL verbinden
Sudo mysql --user=root mysql
2. Erstelle 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 - https://askubuntu.com/questions/763336/cannot-enter-phpmyadmin-as-root-mysql-5-7
Falls Sie mysql oder percona unbeaufsichtigt installieren möchten (wie in meinem Fall ansible), können Sie folgendes 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/.*[email protected]: //p')
# setting new password, you can use $1 and run this script as a file and pass the argument through the script
newPassword="[email protected]"
# resetting temporary password
mysql -uroot -p$password -Bse "ALTER USER 'root'@'localhost' IDENTIFIED BY '$newPassword';"
Ich habe gerade Linux Mint 19 (basierend auf Ubuntu 18.04) auf meinem Computer installiert. Ich habe MySQL 5.7 vom Repo aus installiert ( Sudo apt install mysql-server) und überraschenderweise hat das Setup während der Installation nicht zur Eingabe von root password aufgefordert. Infolgedessen konnte ich mich nicht bei MySQL anmelden. Ich habe hier und da gegoogelt und verschiedene Antworten aus dem Netz ausprobiert, einschließlich der oben akzeptierten Antwort. Ich habe deinstalliert (alle dpkgs mit mysql im Namen gelöscht) und erneut aus den Standard-Linux-Mint-Repositorys installiert. KEINE funktioniert.
Nach stundenlangen unproduktiven Arbeiten entschied ich mich, MySQL von der offiziellen Seite neu zu installieren. Ich habe die MySQL-Download-Seite ( https://dev.mysql.com/downloads/repo/apt ) für ein passendes Repo geöffnet und auf die Schaltfläche Download bei geklickt unten rechts.
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 Software-Quellen.
Aktualisiere dein Repo:
Sudo apt update
Zum Schluss installieren Sie MySQL:
Sudo apt install mysql-server
Und jetzt wurde ich aufgefordert, root Passwort einzugeben! Hoffe, es hilft anderen mit der gleichen Erfahrung.
Mysql generiert ein temporäres Standardkennwort, wenn es installiert ist. Wenn Sie Mysql verwenden möchten, müssen Sie dieses Kennwort zunächst aus der Protokolldatei abrufen, die in der Datei /var/log/mysqld.log enthalten ist. So folgen Sie dem folgenden Prozess -
grep 'Temporäres Passwort' /var/log/mysqld.log
mysql_secure_installation - Dies ist erforderlich, um das Passwort für mysql zu ändern und um bestimmte andere Änderungen vorzunehmen, z. B. das Entfernen temporärer Datenbanken, das Zulassen oder Sperren des Remotezugriffs auf den Root-Benutzer, das Löschen anonymer Benutzer usw.
Nach vielen Versuchen kann 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 auch nach dem Eintippen 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 bekommen, dass der mysqld nicht existiert. Beenden Sie also und geben Sie die gleichen Befehle erneut ein.
Und der letzte Befehl
Sudo /etc/init.d/mysql start
Funktioniert manchmal nicht. Erst nach dem Neustart des Computers.
Es sieht so aus, als ob die Dinge so angelegt wären, dass Entwickler den Root-Benutzer nicht sehen, eine bessere Lösung wäre:
Sudo mysql -u root
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;
Dann versuchen Sie, auf Folgendes zuzugreifen:
mysql -u user -p
Boom!
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 [email protected]; flush privileges; create user [email protected] identified by 'admins_password'
</ code>
Dies ermöglichte mir meine neu zu erstellen username und geben Sie ein passwort für den Benutzernamen
In meinem Fall wurde das Datenverzeichnis automatisch mit der Option --initialize-insecure
Initialisiert. Also enthält /var/log/mysql/error.log
Kein temporäres Passwort, sondern:
[Warnung] root @ localhost wird mit einem leeren Passwort erstellt! Bitte erwägen Sie, die Option --initialize-insecure auszuschalten.
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
Keine dieser Antworten funktionierte für mich unter Ubuntu Server 18.04.1 und MySQL 5.7.23. Ich habe eine Menge Zeit damit verbracht, das Passwort und das Auth-Plugin manuell festzulegen, das Passwort in Protokollen zu finden (es ist nicht da) usw.
Die Lösung ist eigentlich super einfach:
Sudo mysql_secure_installation
Es ist wirklich wichtig, dies mit Sudo
zu tun. Wenn Sie es ohne Erhöhung versuchen, werden Sie nach dem Root-Passwort gefragt, das Sie offensichtlich nicht haben.