Más de una vez. sobre todo al principio de mis andaduras por Linux, me he encontrado con problemas a la hora de instalar mysql en la distribucion Debian 9. Multitud de errores
Recuerdo mis primeras andanzas en Linux con la base de datos MySQL-MariaDB. Era un joven confuso que quería correr los menos comandos posibles mediante sudo, pues mi usuario ya pertenecía al grupo con mayores privilegios del sistema. No entendía por qué no podía correr procesos como mysql usando el usuario root de la base de datos (que sabía que existía).
user@debian:~$ mysql -u root -p
Enter password:
ERROR 1698 (28000): Access denied for user ‘root’@’localhost’
¿Por qué se da este error? La explicación es relativamente sencilla: en MariaDB, la autenticación por defecto para el usuario root se da mediante sockets de UNIX.
Esto quiere decir, de forma sencilla, que si la base de datos tiene un usuario que coincide con el usuario de la sesión que quiere iniciar el proceso mysql, permite iniciar este proceso sin contraseña. Por mucho que nosotros digamos que nos vamos a conectar con el usuario root que existe en el DBMS y se supone que tiene máximos privilegios, no va a existir autenticación posible, por dos motivos:
- No estamos iniciando el proceso desde una sesión de root (con sudo).
- El ususario root del DBMS no tiene contraseña seteada, pues se autentifica mediante sockets de UNIX en función de la sesión que lanza el proceso.
Si no te importa la seguridad porque estás en un ordenador personal y tienes ese tic nervioso que yo tenía al principio usando sistemas Linux, en este enlace puedes encontrar los pasos necesarios para cambiar la autenticación para root de modo socket a modo usuario-contraseña.
Si la pifiamos mucho durante el proceso, y nos cargamos Mysql podéis seguir este otro enlace para reinstalar completamente el gestor de base de datos en vuestra distribución.
De cualquier forma yo recomiendo que no cambiéis el modo de autenticación de root a no ser que sea completamente necesario. Si queréis permisos de administración elevados de la base de datos, cread un nuevo usuario en el gestor con el mismo nombre que vuestro usuario en UNIX y con autenticación mediante sockets para no necesitar setear contraseña ninguna. Mucho más cómodo y seguro.