TL; DR: per accedere alle versioni più recenti di mysql / mariadb dopo come utente root, dopo una nuova installazione, è necessario essere in una shell di root (cioè sudo mysql -u root
o mysql -u root
all'interno di una shell avviata da su -
o sudo -i
prima)
Avendo appena fatto lo stesso aggiornamento, su Ubuntu, ho avuto lo stesso problema.
Quello che era strano era quello
sudo /usr/bin/mysql_secure_installation
Accetterebbe la mia password e mi consentirà di impostarla, ma non sono riuscito ad accedere come root
tramitemysql
client
Ho dovuto iniziare con mariadb
sudo mysqld_safe --skip-grant-tables
per ottenere l'accesso come root, mentre tutti gli altri utenti potrebbero ancora accedere correttamente.
Guardando la mysql.user
tabella ho notato che per root la plugin
colonna è impostata su unix_socket
mentre tutti gli altri utenti è impostata su "mysql_native_password". Una rapida occhiata a questa pagina: https://mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin/ spiega che Unix Socket abilita il login facendo corrispondere uid
il processo che esegue il client con quello dell'utente nel mysql.user
tavolo. In altre parole per accedere a mariadb root
devi essere loggato come root.
Abbastanza sicuro riavviando il mio demone mariadb con l'autenticazione richiesta posso accedere come root con
sudo mysql -u root -p
o
sudo su -
mysql -u root -p
Fatto ciò ho pensato a come accedere senza dover fare il sudo, che è solo questione di eseguire queste query mysql
GRANT ALL PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
(sostituzione <password>
con la password di root mysql desiderata). Questo ha abilitato gli accessi con password per l'utente root.
In alternativa, eseguire la query mysql:
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';
FLUSH PRIVILEGES;
Cambierà l'account di root per utilizzare la password di accesso senza modificare la password, ma questo potrebbe lasciarti con un'installazione mysql / mariadb senza password di root su di essa.
Dopo uno di questi è necessario riavviare mysql / mariadb:
sudo service mysql restart
E voilà ho avuto accesso dal mio account personale tramite mysql -u root -p
NOTA BENE CHE FARE QUESTO STA RIDUCENDO LA SICUREZZA Presumibilmente gli sviluppatori di MariaDB hanno scelto di far funzionare l'accesso root in questo modo per una buona ragione.
A pensarci bene sono abbastanza felice di doverlo fare, sudo mysql -u root -p
quindi sto tornando a quello, ma ho pensato di pubblicare la mia soluzione perché non riuscivo a trovarne una altrove.