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 relacional.
Los comandos DCL se centran principalmente en conceder o revocar privilegios sobre objetos de la base de datos como tablas, vistas y esquemas.
Comandos DCL
Los dos comandos principales de 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 concedidos.
Privilegios
Objetos
Implementación
Para conceder ciertos privilegios sobre un objeto en SQL a un usuario en particular, se puede 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.
Se puede conceder un rol a un usuario utilizando la siguiente sentencia:
GRANT role TO user;
Finalmente, se pueden revocar los privilegios previamente concedidos 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 concedidos:
-- 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
Can you explain the difference between GRANT and REVOKE with examples?
What are some best practices for managing privileges in a database?
How do roles and users differ when assigning privileges?
Genial!
Completion tasa mejorada a 4.55
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 relacional.
Los comandos DCL se centran principalmente en conceder o revocar privilegios sobre objetos de la base de datos como tablas, vistas y esquemas.
Comandos DCL
Los dos comandos principales de 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 concedidos.
Privilegios
Objetos
Implementación
Para conceder ciertos privilegios sobre un objeto en SQL a un usuario en particular, se puede 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.
Se puede conceder un rol a un usuario utilizando la siguiente sentencia:
GRANT role TO user;
Finalmente, se pueden revocar los privilegios previamente concedidos 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 concedidos:
-- 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!