Lenguaje de Control de Datos (DCL)
1. Introducción a DCL #
El Lenguaje de Control de Datos (DCL) se utiliza para controlar el acceso a los datos y gestionar permisos en una base de datos. Los principales comandos de DCL son GRANT y REVOKE.
2. Comando CREATE USER #
Puedes crear nuevos usuarios usando la siguientes sintaxis.
Sintaxis: #
Ejemplo:
Este comando crea el usuario pepe con la contraseña mi_contraseña_segura. Si quieres que el usuario pueda iniciar sesión, asegúrate de incluir la propiedad LOGIN (que está habilitada por defecto).
3. Comando DROP USER #
El comando DROP USER se utiliza para eliminar un usuario de la base de datos.
PostgreSQL:
4. Comando GRANT #
El comando GRANT se utiliza para otorgar permisos a los usuarios.
Sintaxis básica de GRANT:
Ejemplo:
Este comando otorga a usuario1 los permisos para seleccionar (SELECT) e insertar (INSERT) datos en la tabla estudiantes.
5. Permisos Comunes #
- ALL PRIVILEGES: Otorga todos los permisos disponibles.
- SELECT: Permite leer los datos de la tabla.
- INSERT: Permite agregar nuevos registros a la tabla.
- UPDATE: Permite modificar los registros existentes en la tabla.
- DELETE: Permite eliminar registros de la tabla.
- CREATE: Permite crear nuevas tablas, vistas, índices, etc.
- DROP: Permite eliminar tablas, vistas, índices, etc.
- ALTER: Permite modificar la estructura de las tablas.
- INDEX: Permite crear o eliminar índices en una tabla.
- REFERENCES: Permite crear claves foráneas que referencian las columnas de otras tablas.
- TRIGGER: Permite crear o eliminar triggers (disparadores).
- EXECUTE: Permite ejecutar funciones o procedimientos almacenados.
- USAGE: En algunos DBMS, permite el uso de esquemas o secuencias.
6. Alcance #
- ON [object]: El objeto sobre el cual se otorgarán los permisos, como una tabla, vista, o base de datos.
- TO [user/role]: El usuario o rol al cual se le otorgan los permisos.
- WITH GRANT OPTION: Permite que el usuario que recibe los permisos los otorgue a otros usuarios.
- WITH ADMIN OPTION: Permite al usuario otorgar permisos con privilegios de administrador.
7. Comando REVOKE #
El comando REVOKE se utiliza para revocar los permisos otorgados a un usuario.
Sintaxis básica de REVOKE:
Ejemplo:
Este comando revoca el permiso de insertar datos (INSERT) en la tabla estudiantes a usuario1.
8. Ejemplo Completo de DCL #
Otorgar y revocar permisos:
En este ejemplo, usuario2 recibe permisos para seleccionar (SELECT) y actualizar (UPDATE) datos en la tabla estudiantes. Luego, el permiso de actualización (UPDATE) se revoca.
Resumen del tema
Conceptos clave #
- DCL (Data Control Language): sublenguaje encargado de la seguridad, privilegios y control de acceso en la base de datos.
GRANT: otorga privilegios específicos (SELECT,INSERT,UPDATE,DELETE,EXECUTE,ALL PRIVILEGES) sobre objetos a usuarios o roles.REVOKE: retira permisos previamente concedidos (REVOKE ... ON ... FROM ...).- Roles y Grupos: facilitan la administración concediendo permisos a un rol y asignando usuarios a dicho rol en vez de gestionar permisos individuales.
WITH GRANT OPTION: permite que el usuario receptor pueda delegar o conceder ese mismo permiso a terceros.- Particularidades por Motor: motores cliente-servidor (MySQL, PostgreSQL, Oracle, SQL Server) tienen sistemas de autenticación y privilegios granulares; motores embebidos como SQLite delegan la seguridad al sistema de archivos.
Qué debes recordar #
Aplica el principio de mínimo privilegio con GRANT y REVOKE, otorgando a cada usuario o rol únicamente los permisos estrictamente necesarios para su operativa.