2016-10-10 6 views
0

Ich bin zufrieden mit dem neuen Benutzerverhalten von MySQL 5.7 'root'. Es erlaubt nur dem Benutzer linux root auf localhost, sich bei MySQL als Root-Benutzer von MySQL anzumelden.Wie kann ich das Standardbenutzerverhalten 'root' auf MySQL zurücksetzen? 5.7

Ich habe vor kurzem meine alte Benutzer-Tabelle importiert und es hat über diese Änderung geschrieben, jetzt kann sich jeder als root auf localhost mit einem Passwort anmelden.

Wie kann ich die Standard MySQL 5.7 root Benutzereinstellungen wiederherstellen?

Bitte lesen Sie die Frage sorgfältig, da sich viele dieser Funktionen von 5.5 auf 5.7 geändert haben und es leicht ist, diese Frage rückwärts zu beantworten.

+1

Vermutlich wird dies durch Setzen des root-Benutzer-Authentifizierung [ 'auth_socket'] zu verwenden getan wird (https : //dev.mysql.com/doc/mysql-security-excerpt/5.7/de/socket-authentication-plugin.html) aber ohne einen Vorrat 5,7 Server handlich zu sagen, ich zögere, bestimmte Änderungen vorzuschlagen. –

+0

Überprüfen Sie Ihre 'mysql.user' Tabelle und' drop user' jeden '' root '@' someotherhost'', der nicht '' root '@' localhost'' ist. (Sie können auch 'mysql.proxies_priv' überprüfen, aber ich denke, Sie haben nur Root-Benutzer mit anderen Hosts als localhost in' mysql.user'). – Solarflare

+0

Solarflare - leider nicht: '' 'mysql> Benutzer auswählen, Host von mysql.user wo Benutzer =" root "; + ------ + ----------- + | Benutzer | Gastgeber | + ------ + ----------- + | Wurzel | localhost | + ------ + ----------- + 1 Reihe im Satz (0.00 sec) '' ' – robbintt

Antwort

0

Problem:

Das auth_socket Modul manuell installiert werden muss und aktiviert auf den root Benutzer, wenn Sie über die 5.7 Änderungen schreiben, indem Sie Ihre alte MySQL 5.5 Datenbank und Benutzertabelle importieren.

Lösung:

Für Anwender, wir wollen immer noch mysql_native_password verwenden, die Standardeinstellung. Für root möchten wir auth_socket verwenden.

install plugin auth_socket soname 'auth_socket.so'; 
use mysql; update user set plugin='mysql_native_password'; 
update mysql.user set plugin = 'auth_socket' where User='root'; 
flush privileges; 

Wenn Sie es in der falschen Reihenfolge zu tun (fügen root ‚s auth_socket Spalte vor der Installation des Plugins), dann werden Sie nicht in der Lage sein, mysql zu laden, da das Plug-Authentifizierung nicht durchführen wird. So starten und laufen diese mysql im abgesicherten Modus verwenden:

sudo service mysql stop 
sudo mysqld_safe --skip-grant-table & 
sudo mysql -u root -p -h localhost 

Diese Korrekturen durchgeführt wurden, wenn eine vollständige Datenbank und Benutzertabelle MySQL 5.5-MySQL 5.7 importieren, die Migration von Ubuntu 14.04 zu Ubuntu 16.04.

Werkzeuge:

Siehe Plugins: show plugins \g

anzeigen auth_socket auf Root-Benutzer: select auth_socket from mysql.user where user='root';