Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich das Standard-Root-Benutzerverhalten auf MySQL 5.7 zurücksetzen?

Problem:

Der auth_socket Modul muss manuell installiert und im root aktiviert werden Benutzer, wenn Sie die 5.7-Änderungen überschreiben, indem Sie Ihr altes MySQL 5.5 importieren Datenbank und Benutzertabelle.

Lösung:

Für Benutzer möchten wir weiterhin mysql_native_password verwenden , der Standard. 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 tun (fügen Sie root hinzu 's auth_socket Spalte vor der Installation des Plugins), dann können Sie mysql nicht laden, da das Plugin keine Authentifizierung durchführt. Verwenden Sie Folgendes, um MySQL im abgesicherten Modus zu starten und auszuführen:

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

Diese Korrekturen wurden beim Importieren einer vollständigen Datenbank und Benutzertabelle aus MySQL 5.5 durchgeführt zu MySQL 5.7 , Migration von Ubuntu 14.04 zu Ubuntu 16.04 .

Werkzeuge:

Siehe Plugins:show plugins \g

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