Lenguaje de Control de Datos
Lenguaje de Control de Datos (DCL) es un subconjunto de SQL utilizado para controlar el acceso a los datos almacenados en un sistema de gestión de bases de datos relacionales.
Los comandos DCL se centran principalmente en otorgar o revocar privilegios sobre objetos de la base de datos como tablas, vistas y esquemas.
Comandos DCL
Los dos principales comandos DCL son:
-
GRANT
: Este comando se utiliza para otorgar privilegios específicos a usuarios o roles; -
REVOKE
: Este comando se utiliza para eliminar privilegios específicos de usuarios o roles que hayan sido previamente otorgados.
Privilegios
Objetos
Implementación
Para otorgar ciertos privilegios sobre un objeto en SQL a un usuario en particular, podemos utilizar la siguiente sentencia:
GRANT privileges
ON object
TO {user | role | PUBLIC};
Existen 3 tipos de roles en la base de datos a los que se pueden conceder privilegios:
- user: Un usuario individual de la base de datos;
- role: Un rol de base de datos, un grupo nombrado de privilegios que puede ser asignado a usuarios (por ejemplo, admin, developer, analyst);
- PUBLIC: Una palabra clave especial que otorga los privilegios especificados a todos los usuarios.
Podemos conceder un rol a un usuario utilizando la siguiente sentencia:
GRANT role TO user;
Finalmente, podemos revocar los privilegios previamente otorgados utilizando la siguiente sentencia:
REVOKE privileges
ON object
FROM {user | role | PUBLIC};
Ejemplo
A continuación, se muestran algunos ejemplos de cómo utilizar el comando GRANT
para asignar diferentes privilegios sobre las tablas bankaccounts y userlogs a distintos roles y usuarios.
-- Create role
CREATE ROLE bank_manager;
-- Grant privileges to bank_manager role
GRANT SELECT, INSERT, UPDATE, DELETE ON BankAccounts TO bank_manager;
GRANT SELECT, INSERT ON UserLogs TO bank_manager;
-- Create users
CREATE USER john WITH PASSWORD 'password123';
CREATE USER jane WITH PASSWORD 'password456';
-- Assign roles to users
GRANT bank_manager TO john;
GRANT bank_manager TO jane;
Ahora podemos revocar algunos de los privilegios otorgados:
-- Revoke privileges from bank_manager role
REVOKE UPDATE, DELETE ON BankAccounts FROM bank_manager;
REVOKE INSERT ON UserLogs FROM bank_manager;
-- Revoke bank_manager role from john
REVOKE bank_manager FROM john;
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Awesome!
Completion rate improved to 4.35
Lenguaje de Control de Datos
Desliza para mostrar el menú
Lenguaje de Control de Datos (DCL) es un subconjunto de SQL utilizado para controlar el acceso a los datos almacenados en un sistema de gestión de bases de datos relacionales.
Los comandos DCL se centran principalmente en otorgar o revocar privilegios sobre objetos de la base de datos como tablas, vistas y esquemas.
Comandos DCL
Los dos principales comandos DCL son:
-
GRANT
: Este comando se utiliza para otorgar privilegios específicos a usuarios o roles; -
REVOKE
: Este comando se utiliza para eliminar privilegios específicos de usuarios o roles que hayan sido previamente otorgados.
Privilegios
Objetos
Implementación
Para otorgar ciertos privilegios sobre un objeto en SQL a un usuario en particular, podemos utilizar la siguiente sentencia:
GRANT privileges
ON object
TO {user | role | PUBLIC};
Existen 3 tipos de roles en la base de datos a los que se pueden conceder privilegios:
- user: Un usuario individual de la base de datos;
- role: Un rol de base de datos, un grupo nombrado de privilegios que puede ser asignado a usuarios (por ejemplo, admin, developer, analyst);
- PUBLIC: Una palabra clave especial que otorga los privilegios especificados a todos los usuarios.
Podemos conceder un rol a un usuario utilizando la siguiente sentencia:
GRANT role TO user;
Finalmente, podemos revocar los privilegios previamente otorgados utilizando la siguiente sentencia:
REVOKE privileges
ON object
FROM {user | role | PUBLIC};
Ejemplo
A continuación, se muestran algunos ejemplos de cómo utilizar el comando GRANT
para asignar diferentes privilegios sobre las tablas bankaccounts y userlogs a distintos roles y usuarios.
-- Create role
CREATE ROLE bank_manager;
-- Grant privileges to bank_manager role
GRANT SELECT, INSERT, UPDATE, DELETE ON BankAccounts TO bank_manager;
GRANT SELECT, INSERT ON UserLogs TO bank_manager;
-- Create users
CREATE USER john WITH PASSWORD 'password123';
CREATE USER jane WITH PASSWORD 'password456';
-- Assign roles to users
GRANT bank_manager TO john;
GRANT bank_manager TO jane;
Ahora podemos revocar algunos de los privilegios otorgados:
-- Revoke privileges from bank_manager role
REVOKE UPDATE, DELETE ON BankAccounts FROM bank_manager;
REVOKE INSERT ON UserLogs FROM bank_manager;
-- Revoke bank_manager role from john
REVOKE bank_manager FROM john;
¡Gracias por tus comentarios!