wake-up-neo.net

Das Root-Passwort kann nicht mit --skip-grant-tables auf Ubuntu 16 zurückgesetzt werden

Ich versuche, das root-Passwort nach MysqlPasswordReset zurückzusetzen, aber wenn ich versuche, den Server mit --skip-grant-tables zu starten, startet der Server nicht

  • Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-59-Generic x86_64)
  • mysql Ver 14.14 Distrib 5.7.17, für Linux (x86_64)

Server läuft

$ mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Server stoppen

$ Sudo /etc/init.d/mysql stop
[ ok ] Stopping mysql (via systemctl): mysql.service.

Versuchen Sie mit --skip-grant-tables zu beginnen

Sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
[1] 9856

Verbinden Sie sich ohne Passwort

$ mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
[1]+  Exit 1                  Sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking

Ich habe auch versucht, mit mysql_safe zu beginnen (error.log ist leer)

Sudo mysqld_safe --skip-grant-tables
2017-02-01T16:33:31.382105Z mysqld_safe Logging to syslog.
2017-02-01T16:33:31.383942Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-01T16:33:31.386058Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-01T16:33:31.388009Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
28
pedronalbert

Ich habe festgestellt, dass mysql.sock gelöscht wird, wenn der mysql-Dienst gestoppt wird und mysqld_safe es nicht erstellen kann (ich konnte den Grund nicht finden). Daher bestand meine Lösung darin, den Sockenordner zu sichern und wiederherzustellen, bevor mysqld_safe gestartet wird

Server starten

$ Sudo service mysql start

Gehen Sie in den Sockenordner

$ cd /var/run

Sichern Sie die Socke

$ Sudo cp -rp ./mysqld ./mysqld.bak

Server stoppen

$ Sudo service mysql stop

Stellen Sie die Socke wieder her

$ Sudo mv ./mysqld.bak ./mysqld

Starten Sie mysqld_safe

$ Sudo mysqld_safe --skip-grant-tables --skip-networking &

Init MySQL-Shell

mysql -u root

Ändere das Passwort

FLUSH PRIVILEGES;

SET PASSWORD FOR [email protected]'localhost' = PASSWORD('my_new_password');
83
pedronalbert

Pedronalberts Antwort oben funktionierte für mich, aber der letzte Schritt ist nun veraltet und wirft die folgende Warnung aus:

Warnung | 1287 | 'SET PASSWORD FOR = PASSWORD (' ')' ist veraltet und wird in zukünftigen Versionen entfernt. Bitte verwenden Sie stattdessen SET PASSWORD FOR = '' 

Verwenden Sie stattdessen diesen Befehl:

SET PASSWORD FOR root = '<plaintext_password>';
5
auhsor

Ich habe viele Möglichkeiten ausprobiert, darunter auch @pedronalbert, funktioniert aber immer noch nicht.

Wie ich es gelöst habe, füge "skip-grant-tables" in /etc/my.cnf hinzu, starte den mysql-Dienst und verbinde mysql mit "mysql -u root" als. . https://www.codero.com/knowledge-base/content/33/296/de/how-to-reset-your-root-mysql-password.html

Es funktioniert in meinem VM CentOS 7.

1
gevge