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 rooto mysql -u rootall'interno di una shell avviata da su -o sudo -iprima)
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 roottramitemysql 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.usertabella ho notato che per root la plugincolonna è impostata su unix_socketmentre 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 uidil processo che esegue il client con quello dell'utente nel mysql.usertavolo. In altre parole per accedere a mariadb rootdevi 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 -pquindi sto tornando a quello, ma ho pensato di pubblicare la mia soluzione perché non riuscivo a trovarne una altrove.