Como crear usuarios en Mysql y otorgar permisos

Antes de empezar con el tutorial, asumo que ya tienes un servidor de MySQL o MariaDB instalado en tu sistema. Si no, puedes instalarlo siguiendo este tutorial:

Instalar MariaDB en Debian 9

Todos los comandos serán ejecutados como el usuario administrador dentro del terminal de la base de datos o con la cuenta de root.
Para acceder al terminal de MySQL simplemente abriremos una consola y ejecutaremos el siguiente comando junto a la contraseña de root

$ mysql -u root -p

En caso de no tener asignada una contraseña para el usuario root, simplemente omite la opción ‘-p’

Crea un nuevo usuario en MySQL

Una cuenta de usuario en MySQL consiste en un nombre de usuario y otro de host.
Para crearlo simplemente ejecutamos:

mysql> CREATE USER 'nuevousuario'@'localhost' IDENTIFIED BY 'contraseña';

Remplaza el valor nuevo usuario con el nombre de usuario adecuado y el valor contraseña por una contraseña segura.

En el comando mencionado arriba, la parte del host es localhost lo cual quiere decir que ese usuario tiene habilitado la conexión únicamente desde el equipo donde se ejecuta el servidor.

Para darle acceso solo desde una IP específica, por ejemplo : 5.2.1.10 simplemente usaremos:

mysql> CREATE USER 'nuevousuario'@'5.2.1.10' IDENTIFIED BY 'contraseña';

Y para finalizar con esta sección, para habilitar la conexión sin importar su host, usamos el carácter ‘%’ como host.

mysql> CREATE USER 'nuevousuario'@'%' IDENTIFIED BY 'contraseña';

Otorgar privilegios a un usuario de MySQL

Existe una gran variedad de privilegios que pueden ser otorgados a un usuario. Puedes encontrar una lista completa de los privilegios admitidos aquí
Los más comunes son:

  • ALL PRIVILEGES

    – Otorga todos los privilegios al usuario

  • CREATE

    – Otorga el privilegio de crear bases de datos y tablas

  • DROP

    – Otorga el privilegio de borrar bases de datos y tablas

  • DELETE

    – Otorga el privilegio de eliminar filas de una tabla especifica

  • INSERT

    – Otorga el privilegio de insertar filas en una tabla especifica

  • SELECT

    – Otorga el privilegio de leer una base de datos

  • UPDATE

    – Otorga el privilegio de actualizar las filas de una tabla

Para otorgar privilegios específicos a un usuario, puedes usar la siguiente sintaxis:

mysql> GRANT permiso1, permiso2 ON basededatos.nombredetabla TO 'usuario';

Aquí te dejo algunos ejemplos:

    • otorgar todos los privilegios a un usuario en una base de datos especifica
mysql> GRANT ALL PRIVILEGES ON basededatos.* TO 'usuario'@'localhost';
    • Otorgar todos los privilegios en todas las bases de datos
mysql> GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'localhost';

Mostrar los privilegios de un usuario

Para poder encontrar que privilegios tiene el usuario, usamos el comando SHOW GRANTS

mysql> SHOW GRANTS FOR 'usuario'@'localhost';

La salida nos mostraría algo similar a esto:

+---------------------------------------------------------------------------+
| Grants for database_user@localhost                                       |
+---------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'database_user'@'localhost'                        |
| GRANT ALL PRIVILEGES ON `database_name`.* TO 'database_user'@'localhost' |
+---------------------------------------------------------------------------+
2 rows in set (0.00 sec)

Eliminar privilegios de un usuario

La sintaxis para eliminar uno o mas privilegios de un usuario es casi idéntica a cuando los otorgamos.
Por ejemplo, para eliminar todos los privilegios de un usuario en una base de datos usaríamos:

mysql> REVOKE ALL PRIVILEGES ON basededatos.* TO 'usuario'@'localhost';

Eliminar un usuario existente

Para eliminar un usuario en mysql usamos el siguiente comando:

mysql> DROP USER 'usuario'@'localhost';

El comando eliminará la cuenta de usuario y sus privilegios.

Conclusión

Este tutorial solo cubre la parte básica, pero es un buen comienzo para aquellas personas que quieran aprender acerca de los usuarios en MySQL o MariaDB.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.