Web y datos

Cómo crear un nuevo usuario y otorgar autorizaciones en MySQL

Cree un usuario en MySQL y otórguele autorizaciones: GRANT, REVOKE, FLUSH PRIVILEGES, SHOW GRANTS y DROP USER, explicados con ejemplos de comandos SQL.

· 4 min de lectura · nivel principiante

Introducción

MySQL es un software de gestión de bases de datos de código abierto que ayuda a los usuarios a almacenar, organizar y recuperar datos. Existe un amplio abanico de opciones para otorgar las autorizaciones adecuadas a usuarios concretos en las tablas y las bases de datos. Este tutorial le ofrecerá una breve visión de algunas de las numerosas opciones disponibles.

Illustration 1 — Comment créer un nouvel utilisateur et octroyer des autorisations dans MySQL

Cómo crear un nuevo usuario

Seguramente ya haya realizado modificaciones en MySQL como usuario root, con acceso completo a todas las bases de datos. Sin embargo, en los casos en que necesite configurar restricciones adicionales, existen maneras de crear usuarios con autorizaciones personalizadas.

Empecemos por crear un nuevo usuario en el shell de MySQL:

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

Observación: cuando añadamos usuarios en el shell de MySQL a lo largo de este tutorial, indicaremos que el host del usuario es localhost y no la dirección IP del servidor. localhost es un nombre de host que significa «este ordenador». MySQL trata de manera particular este nombre de host específico: cuando un usuario con este host se conecta a MySQL, intentará conectarse al servidor local utilizando un archivo de socket Unix. Por consiguiente, de manera general, puede utilizar localhost si tiene previsto conectarse a su servidor por SSH o ejecutar el cliente mysql local para conectarse al servidor MySQL local.

En esta fase, username no tiene ninguna autorización y no puede hacer nada en las bases de datos. En efecto, aunque username intente conectarse (con la contraseña password), no podrá llegar al shell de MySQL.

Por consiguiente, lo primero que hay que hacer consiste en dar al usuario acceso a la información que necesita.

GRANT ALL PRIVILEGES ON * . * TO 'username'@'localhost';

Los asteriscos de este comando remiten a la base de datos y a la tabla (respectivamente) a las que puede acceder. Este comando concreto permite al usuario leer, modificar, ejecutar y efectuar cualquier tarea en la totalidad de las bases de datos y de las tablas.

Tenga en cuenta que, en este ejemplo, concedemos a username un acceso root total a todo lo que se encuentra en nuestra base de datos. Aunque esto resulta útil para explicar algunos conceptos de MySQL, es posible que este método sea impracticable en la mayoría de los casos de uso y exponga su base de datos a importantes riesgos de seguridad.

Una vez que haya terminado con las autorizaciones que desea configurar para sus nuevos usuarios, procure recargar siempre todos los privilegios.

FLUSH PRIVILEGES;

Ahora sus modificaciones han surtido efecto.

Cómo otorgar diferentes autorizaciones a los usuarios

Esta es una breve lista de las demás autorizaciones posibles de uso corriente que puede otorgar a los usuarios.

  • ALL PRIVILEGES: como hemos visto anteriormente, da al usuario de MySQL un acceso total a una base de datos designada (o un acceso global a todo el sistema si no se selecciona ninguna base de datos)
  • CREATE: permite crear nuevas tablas o bases de datos
  • DROP: permite eliminar tablas o bases de datos
  • DELETE: permite eliminar filas de las tablas
  • INSERT: permite insertar filas en las tablas
  • SELECT: permite utilizar el comando SELECT para leer bases de datos
  • UPDATE: permite actualizar las filas de una tabla
  • GRANT OPTION: permite conceder o suprimir los privilegios de los demás usuarios

Para dar una autorización a un usuario concreto, puede utilizar el comando siguiente:

GRANT type_of_permission ON database_name.table_name TO 'username'@'localhost';

Si desea darle acceso a cualquiera de las bases de datos o de las tablas, procure sustituir el nombre de la base de datos o de la tabla por un asterisco (*).

Cada vez que actualice o modifique una autorización, procure utilizar el comando Flush Privileges.

Para revocar una autorización, la estructura es prácticamente idéntica a la del otorgamiento de autorización:

REVOKE type_of_permission ON database_name.table_name FROM 'username'@'localhost';

Tenga en cuenta que, cuando revoca autorizaciones, debe utilizar la sintaxis FROM en lugar del TO que hemos utilizado para conceder autorizaciones.

Puede comprobar las autorizaciones otorgadas actualmente a un usuario ejecutando el comando siguiente:

SHOW GRANTS FOR 'username'@'localhost';

De la misma manera que puede eliminar bases de datos con DROP, puede utilizar DROP para eliminar por completo a un usuario:

DROP USER 'username'@'localhost';

Para probar su nuevo usuario, desconéctese escribiendo:

quit

y vuelva a conectarse utilizando el comando siguiente en el terminal:

mysql -u username -p

Conclusión

Una vez terminado este tutorial, debería tener una idea más clara sobre la manera de añadir nuevos usuarios y de otorgarles diferentes autorizaciones en una base de datos MySQL. A partir de ahí, puede seguir explorando y experimentando con los diferentes parámetros de autorización que existen para su base de datos, o aprender más sobre algunas configuraciones de MySQL de nivel superior.

Este trabajo está bajo Licencia Internacional Creative Commons Attribution NonCommercial ShareAlike 4.0