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 root
dentro de un shell iniciado por su -
o sudo -i
primero)
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 root
través del mysql
cliente
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.user
tabla, noté que la plugin
columna está configurada para la raíz, unix_socket
mientras 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 uid
el proceso que ejecuta el cliente con el del usuario en el mysql.user
mesa. En otras palabras, para acceder a mariadb, ya root
que 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 -p
así que volveré a eso, pero pensé en publicar mi solución ya que no pude encontrar una en otro lugar.