Mysql
 sql >> Database >  >> RDS >> Mysql

Come posso ripristinare il comportamento utente "root" predefinito su MySQL 5.7

Problema:

Il auth_socket il modulo deve essere installato e abilitato manualmente sulla root utente se scrivi le modifiche 5.7 importando il tuo vecchio MySQL 5.5 database e tabella utente.

Soluzione:

Per gli utenti vogliamo continuare a utilizzare mysql_native_password , il predefinito. Per root , vogliamo usare auth_socket .

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;

Se lo fai nell'ordine sbagliato (aggiungi root è auth_socket colonna prima di installare il plug-in), non sarai in grado di caricare mysql poiché il plug-in non eseguirà l'autenticazione. Per avviare ed eseguire mysql in modalità provvisoria usa questo:

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

Queste correzioni sono state eseguite durante l'importazione di un database completo e di una tabella utente da MySQL 5.5 a MySQL 5.7 , migrando da Ubuntu 14.04 a Ubuntu 16.04 .

Strumenti:

Vedi Plugin:show plugins \g

Mostra auth_socket sull'utente root:select auth_socket from mysql.user where user='root';