TL; DR: para acceder a versiones más nuevas de mysql / mariadb después como usuario root, después de una nueva instalación, debe estar en un shell raíz (es decir sudo mysql -u root, o mysql -u rootdentro de un shell iniciado por su -o sudo -iprimero)
Habiendo hecho la misma actualización, en Ubuntu, tuve el mismo problema.
Lo extraño fue que
sudo /usr/bin/mysql_secure_installation
Aceptaría mi contraseña y me permitiría configurarla, pero no pude iniciar sesión como a roottravés del mysqlcliente
Tuve que empezar mariadb con
sudo mysqld_safe --skip-grant-tables
para obtener acceso como root, mientras que todos los demás usuarios aún podrían acceder bien.
Al mirar la mysql.usertabla, noté que la plugincolumna está configurada para la raíz, unix_socketmientras que todos los demás usuarios están configurados como 'mysql_native_password'. Un vistazo rápido a esta página: https://mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin/ explica que Unix Socket permite iniciar sesión haciendo coincidir uidel proceso que ejecuta el cliente con el del usuario en el mysql.usermesa. En otras palabras, para acceder a mariadb, ya rootque debe iniciar sesión como root.
Efectivamente, reiniciando mi daemon mariadb con autenticación requerida, puedo iniciar sesión como root con
sudo mysql -u root -p
o
sudo su -
mysql -u root -p
Habiendo hecho esto, pensé en cómo acceder sin tener que hacer el sudo, que es solo una cuestión de ejecutar estas consultas de mysql
GRANT ALL PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
(reemplazando <password>con su contraseña de root mysql deseada). Esto habilitó los inicios de sesión con contraseña para el usuario root.
Alternativamente, ejecutando la consulta mysql:
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';
FLUSH PRIVILEGES;
Cambiará la cuenta de root para usar el inicio de sesión con contraseña sin cambiar la contraseña, pero esto puede dejarlo con una instalación de mysql / mariadb sin contraseña de root.
Después de cualquiera de estos, debe reiniciar mysql / mariadb:
sudo service mysql restart
Y listo, tuve acceso desde mi cuenta personal a través de mysql -u root -p
TENGA EN CUENTA QUE HACER ESTO REDUCE LA SEGURIDAD Presumiblemente, los desarrolladores de MariaDB han optado por que el acceso a la raíz funcione de esta manera por una buena razón.
Pensando en ello, estoy bastante feliz de tener que hacerlo, sudo mysql -u root -pasí que volveré a eso, pero pensé en publicar mi solución ya que no pude encontrar una en otro lugar.