Crear un usuario y otorgarle permisos sobre una base de datos MySQL/MariaDB

Al momento de comenzar a trabajar con MySQL o MariaDB, es una buena práctica crear un usuario, asignarlo a una base de datos y crearle los respectivos permisos de acceso. Con esto, evitamos usar el usuario root en nuestras aplicaciones, lo cual es una falla de seguridad importante en el mundo de bases de datos. ¿Por qué? Por los siguientes motivos:

  • Imagina que alguien averigua nuestro usuario root, entones tendrá acceso a todas las bases de datos.
  • Al tener usuarios por cada base de datos podemos otorgarles diferentes permisos de acceso. Solo permiso de escritura, solo permiso de lectura, ambos permisos, etc.

En esta pequeña guía supondremos que estamos trabajando desde consola.

Creando la base de datos

mysql> CREATE DATABASE `dbtest`;

Creando el usuario en el servidor local

mysql> CREATE USER 'nuevousuario'@'localhost' IDENTIFIED BY 'password';

Con el comando anterior hemos creado el usuario nuevousuario. Sin embargo, no tiene ningún privilegio para realizar algo sobre una base de datos. Por consiguiente, hay que otorgarle algunos permisos.

Otorgar todos los privilegios sobre una base de datos


mysql> GRANT ALL PRIVILEGES ON `dbtest`.* TO 'nuevousuario'@'localhost';

Con este comando estamos asignando todos los privilegios al usuario nuevousuario sobre la base de datos dbtest. El asterisco * indica que estos permisos se aplicaran sobre todas las tablas de la base de datos dbtest.

Otorgar solo algunos privilegios sobre una base de datos

El comando anterior otorga acceso sin limites a una base de datos. Pero ¿Qué pasa si deseamos otorgar solo algunos privilegios? Bueno, para esto se usa el mismo comando GRANT, pero especificando los privilegios separados por comas.

$ mysql> GRANT SELECT, INSERT ON `dbtest`.* TO 'nuevousuario'@'localhost';

En el comando anterior solo se le da al usuario nuevousuario permisos de consulta (SELECT) e inserción (INSERT). Aquí te dejo el enlace a los privilegios que se encuentran disponibles en MySQL.

Aplicar cambios

Para hacer efectivos nuestros privilegios debemos realizar el siguiente comando:

mysql> FLUSH PRIVILEGES;

Verificar los privilegios del usuario

Si deseamos verificar los privilegios que tiene el usuario podemos ejecutar lo siguiente:

mysql> SHOW GRANTS FOR 'nuevousuario'@localhost;

Despues de haber leído esta pequeña guía, ya deberías ser capaz de tener una idea sobre como crear una base de datos, agregar nuevos usuarios y otorgarles diversos permisos.

Share