Linguagem de Controle de Dados
Data Control Language (DCL) é um subconjunto do SQL utilizado para controlar o acesso aos dados armazenados em um sistema de gerenciamento de banco de dados relacional.
Os comandos DCL estão principalmente relacionados à concessão ou revogação de privilégios sobre objetos do banco de dados, como tabelas, visões e esquemas.
Comandos DCL
Os dois principais comandos DCL são:
-
GRANT: este comando é utilizado para conceder privilégios específicos a usuários ou funções; -
REVOKE: este comando é utilizado para remover privilégios específicos de usuários ou funções que já os possuíam.
Privilégios
Objetos
Implementação
Para conceder privilégios a um objeto em SQL para um usuário específico, podemos utilizar a seguinte instrução:
GRANT privileges
ON object
TO {user | role | PUBLIC};
Existem 3 tipos de funções no banco de dados para as quais é possível conceder privilégios:
- user: um usuário individual do banco de dados;
- role: uma função do banco de dados, um grupo nomeado de privilégios que pode ser atribuído a usuários (por exemplo, admin, developer, analyst);
- PUBLIC: uma palavra-chave especial que concede os privilégios especificados a todos os usuários.
Podemos conceder uma função a um usuário utilizando a seguinte instrução:
GRANT role TO user;
Por fim, podemos revogar privilégios previamente concedidos utilizando a seguinte instrução:
REVOKE privileges
ON object
FROM {user | role | PUBLIC};
Exemplo
Aqui estão alguns exemplos de como usar o comando GRANT para atribuir diferentes privilégios nas tabelas bankaccounts e userlogs para diferentes funções e usuários.
-- 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;
Agora podemos revogar alguns dos privilégios 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;
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
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
Linguagem de Controle de Dados
Deslize para mostrar o menu
Data Control Language (DCL) é um subconjunto do SQL utilizado para controlar o acesso aos dados armazenados em um sistema de gerenciamento de banco de dados relacional.
Os comandos DCL estão principalmente relacionados à concessão ou revogação de privilégios sobre objetos do banco de dados, como tabelas, visões e esquemas.
Comandos DCL
Os dois principais comandos DCL são:
-
GRANT: este comando é utilizado para conceder privilégios específicos a usuários ou funções; -
REVOKE: este comando é utilizado para remover privilégios específicos de usuários ou funções que já os possuíam.
Privilégios
Objetos
Implementação
Para conceder privilégios a um objeto em SQL para um usuário específico, podemos utilizar a seguinte instrução:
GRANT privileges
ON object
TO {user | role | PUBLIC};
Existem 3 tipos de funções no banco de dados para as quais é possível conceder privilégios:
- user: um usuário individual do banco de dados;
- role: uma função do banco de dados, um grupo nomeado de privilégios que pode ser atribuído a usuários (por exemplo, admin, developer, analyst);
- PUBLIC: uma palavra-chave especial que concede os privilégios especificados a todos os usuários.
Podemos conceder uma função a um usuário utilizando a seguinte instrução:
GRANT role TO user;
Por fim, podemos revogar privilégios previamente concedidos utilizando a seguinte instrução:
REVOKE privileges
ON object
FROM {user | role | PUBLIC};
Exemplo
Aqui estão alguns exemplos de como usar o comando GRANT para atribuir diferentes privilégios nas tabelas bankaccounts e userlogs para diferentes funções e usuários.
-- 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;
Agora podemos revogar alguns dos privilégios 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;
Obrigado pelo seu feedback!