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?
Awesome!
Completion rate improved to 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!