TL; DR: Um den Zugriff neuere Versionen von MySQL / MariaDB nach als Root - Benutzer, nachdem ein neuen installieren, müssen Sie in einem Root - Shell sein (dh sudo mysql -u root
, oder mysql -u root
in einer Shell gestartet durch su -
oder sudo -i
ersten)
Nachdem ich gerade das gleiche Upgrade unter Ubuntu durchgeführt hatte, hatte ich das gleiche Problem.
Was seltsam war, war das
sudo /usr/bin/mysql_secure_installation
Ich würde mein Passwort akzeptieren und es mir erlauben, es festzulegen, aber ich konnte mich nicht root
über den mysql
Client anmelden
Ich musste mit Mariadb anfangen
sudo mysqld_safe --skip-grant-tables
Zugriff als root zu erhalten, während alle anderen Benutzer noch gut zugreifen konnten.
Beim Betrachten der mysql.user
Tabelle habe ich festgestellt, dass für root die plugin
Spalte unix_socket
auf "mysql_native_password" gesetzt ist, während für alle anderen Benutzer. Ein kurzer Blick auf diese Seite: https://mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin/ erklärt, dass der Unix-Socket die Anmeldung ermöglicht, indem uid
der Prozess, auf dem der Client ausgeführt wird, mit dem des Benutzers im Internet abgeglichen wird mysql.user
Tabelle. Mit anderen Worten, um auf Mariadb zuzugreifen, müssen root
Sie als root angemeldet sein.
Sicher genug, um meinen Mariadb-Daemon mit der erforderlichen Authentifizierung neu zu starten. Ich kann mich als Root anmelden
sudo mysql -u root -p
oder
sudo su -
mysql -u root -p
Nachdem ich dies getan hatte, überlegte ich, wie ich darauf zugreifen sollte, ohne das Sudo ausführen zu müssen. Dies ist nur eine Frage der Ausführung dieser MySQL-Abfragen
GRANT ALL PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
(Ersetzen <password>
durch Ihr gewünschtes MySQL-Root-Passwort). Dadurch wurden Kennwortanmeldungen für den Root-Benutzer aktiviert.
Alternativ können Sie die MySQL-Abfrage ausführen:
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';
FLUSH PRIVILEGES;
Ändert das Root-Konto, um die Kennwortanmeldung zu verwenden, ohne das Kennwort zu ändern. Dies führt jedoch möglicherweise zu einer Installation von mysql / mariadb ohne Root-Kennwort.
Nach beiden müssen Sie mysql / mariadb neu starten:
sudo service mysql restart
Und voila hatte ich Zugriff von meinem persönlichen Account über mysql -u root -p
BITTE BEACHTEN SIE, DASS DIESE SICHERHEIT REDUZIERT Vermutlich haben sich die MariaDB-Entwickler aus gutem Grund für einen solchen Root-Zugriff entschieden.
Wenn sudo mysql -u root -p
ich darüber nachdenke, bin ich ziemlich froh, dass ich das tun muss, also wechsle ich zurück, aber ich dachte, ich würde meine Lösung veröffentlichen, da ich anderswo keine finden konnte.