Saltar al contenido principal
Documentos
FuncionesExpresionesKeywordsDeclaracionesCláusulas

Declaración GRANT de MySQL

La sentencia GRANT en MySQL se utiliza para asignar privilegios a las cuentas de usuario de MySQL. Define qué operaciones pueden realizar los usuarios en los objetos de la base de datos, como tablas y vistas, garantizando un acceso controlado a la base de datos.

Utilización

La sentencia GRANT se emplea cuando necesitas dar permisos a usuarios concretos para ejecutar determinados tipos de operaciones SQL. Ayuda a gestionar los derechos de los usuarios de forma eficaz y segura.

GRANT privileges
ON database_name.table_name
TO 'user'@'host'
[IDENTIFIED BY 'password'];

En esta sintaxis, privileges son los permisos concedidos, database_name.table_name especifica el ámbito, user es el nombre de usuario de MySQL y host es la ubicación desde la que se conecta el usuario. Ten en cuenta que la cláusula IDENTIFIED BY 'password' sólo es aplicable al crear un nuevo usuario. En MySQL 8.0 y versiones posteriores, normalmente se recomienda utilizar CREATE USER seguido de GRANT para la creación de usuarios y la asignación de privilegios.

Ejemplos

1. Concesión de privilegios básicos

GRANT SELECT, INSERT
ON mydb.mytable
TO 'user1'@'localhost';

Este ejemplo concede los privilegios SELECT y INSERT en mydb.mytable a user1 conectándose desde localhost.

2. Conceder todos los privilegios en una base de datos

GRANT ALL PRIVILEGES
ON mydb.*
TO 'user2'@'192.168.1.1';

Aquí, a user2 se le conceden todos los privilegios sobre toda la base de datos mydb desde el host 192.168.1.1.

3. Conceder privilegios con contraseña

GRANT SELECT, UPDATE
ON mydb.mytable
TO 'user3'@'%' IDENTIFIED BY 'securepassword';

Esta sentencia concede privilegios a SELECT y UPDATE en mydb.mytable a user3 desde cualquier host (%), estableciendo una contraseña especificada. Utilizar % permite conexiones desde cualquier host, lo que podría tener implicaciones de seguridad.

Información adicional

Privilegios globales

Para conceder privilegios globales que se apliquen a todas las bases de datos, utiliza la sintaxis ON *.*. Concede globalmente los privilegios especificados.

Revocación de privilegios

Para revocar privilegios, utiliza la declaración REVOKE:

REVOKE privileges
ON database_name.table_name
FROM 'user'@'host';

Esto elimina los privilegios especificados del usuario.

Consejos y buenas prácticas

  • Limita los privilegios. Concede sólo los privilegios necesarios a los usuarios para minimizar los riesgos de seguridad.
  • Utiliza nombres de host específicos. Siempre que sea posible, especifica nombres de host o direcciones IP para restringir el acceso, en lugar de utilizar % para todos los hosts.
  • Gestiona las contraseñas de forma segura. Utiliza siempre contraseñas fuertes y únicas cuando crees cuentas de usuario.
  • Revisa periódicamente los permisos. Audita periódicamente y revoca los privilegios innecesarios para mantener una seguridad óptima. Utiliza la tabla mysql.user o las vistas del esquema de información relevante para revisar los privilegios de usuario existentes.
  • Cambios en los documentos. Lleva un registro de todas las declaraciones GRANT emitidas para facilitar el seguimiento de los permisos.

Perfeccionamiento de SQL para principiantes

Adquiere los conocimientos de SQL para interactuar con tus datos y consultarlos.
Empieza a aprender gratis