Bóson Treinamentos em Ciência e Tecnologia

Comandos DCL SQL e sua sintaxe

O que são os Comandos DCL em SQL

Comandos DCL SQL e sua sintaxe

Os comandos DCL (Data Control Language / Linguagem de Controle de Dados) em SQL são um conjunto de declarações responsáveis por controlar e gerenciar a segurança e permissões de acesso aos dados armazenados em um banco de dados relacional.

Esses comandos permitem que o administrador do banco de dados conceda ou revogue privilégios de acesso para usuários e grupos de usuários, controlando quem tem permissão para visualizar, modificar ou excluir dados específicos.

Os comandos DCL mais comuns são GRANT e REVOKE. O comando GRANT é usado para conceder permissões a usuários ou grupos de usuários, permitindo que eles executem determinadas operações em objetos específicos, como tabelas ou views.

O comando REVOKE, por sua vez, é usado para revogar essas permissões, removendo o acesso aos objetos especificados.

Os comandos DCL também incluem outras funcionalidades importantes, como a capacidade de definir papéis (roles) e definir políticas de segurança para proteger dados sensíveis. Os papéis são usados para agrupar usuários com permissões semelhantes, simplificando a administração de permissões em grandes bancos de dados com muitos usuários.

Para implementar políticas de segurança, os comandos DCL também permitem que o administrador defina restrições de acesso para determinados usuários ou grupos de usuários. Isso pode incluir a restrição de acesso a determinadas tabelas, limitações na execução de certos comandos, ou a definição de restrições de acesso baseadas em funções ou papéis.

Vejamos com mais detalhes as declarações GRANT e REVOKE. usarei a sintaxe e exemplos dessas declarações no SGBD MySQL neste artigo.

A Declaração GRANT

A declaração GRANT em MySQL é usada para conceder permissões a usuários ou grupos de usuários para executar determinadas ações em um banco de dados específico.

A sintaxe básica da declaração GRANT no MySQL é a seguinte:

GRANT permissão(s) ON nome_banco.nome_tabela TO 'usuario'@'host' IDENTIFIED BY 'senha';

Onde:

Você deve substituir permissão(s) pelo conjunto de permissões que deseja conceder ao usuário especificado. Por exemplo, podemos usar a sintaxe:

GRANT SELECT, INSERT, UPDATE ON db_biblioteca.tbl_livros TO 'fabio'@'localhost' IDENTIFIED BY '123';

para conceder permissões de seleção, inserção e atualização na tabela especificada para o usuário especificado na tabela de livros do banco db_biblioteca.

Também é possível conceder permissões a todos os bancos de dados ou tabelas de uma só vez usando o caractere curinga (*). Por exemplo:

GRANT ALL PRIVILEGES ON *.* TO 'fabio'@'localhost' IDENTIFIED BY '123';

concederia acesso a todos os bancos de dados e tabelas no servidor MySQL ao usuário ‘fabio’.

Exemplos da declaração GRANT SQL

Vejamos mais alguns exemplos:

1. Conceder acesso total ao banco de dados db_biblioteca para o usuário fabio:

GRANT ALL PRIVILEGES ON db_biblioteca.* TO 'fabio'@'localhost' IDENTIFIED BY '123';

2. Conceder acesso somente leitura a um banco de dados para o usuário:

GRANT SELECT ON db_biblioteca.* TO 'fabio'@'localhost' IDENTIFIED BY '123';

3. Conceder acesso somente para inserir dados na tabela de autores para o usuário:

GRANT INSERT ON db_biblioteca.tbl_autores TO 'fabio'@'localhost' IDENTIFIED BY '123';

4. Conceder acesso a todos os bancos de dados para o usuário:

GRANT ALL PRIVILEGES ON *.* TO 'fabio'@'localhost' IDENTIFIED BY '123';

5. Conceder acesso total ao usuário com base em seu endereço IP:

GRANT ALL PRIVILEGES ON db_biblioteca.* TO 'fabio'@'192.168.1.100' IDENTIFIED BY '123';

A Declaração REVOKE

A declaração REVOKE em MySQL é usada para revogar as permissões concedidas anteriormente a um usuário ou grupo de usuários em um banco de dados ou tabela específica.

A sintaxe básica da declaração REVOKE no MySQL é a seguinte:

REVOKE permissão(s) ON nome_banco_dados.nome_tabela FROM 'usuario'@'host';

Onde:

Devemos substituir permissão(s) pelo conjunto de permissões que deseja revogar do usuário especificado. Por exemplo, podemos usar a sintaxe:

REVOKE SELECT, INSERT, UPDATE ON nome_banco_dados.nome_tabela FROM 'usuario'@'localhost';

para revogar as permissões de seleção, inserção e atualização na tabela especificada para um usuário especificado.

Também é possível revogar permissões de todos os bancos de dados ou tabelas usando o caractere curinga (*). Por exemplo:

REVOKE ALL PRIVILEGES ON *.* FROM 'usuario'@'localhost';

revogaria todas as permissões de todos os bancos de dados e tabelas no servidor MySQL para o usuário especificado.

Note que, ao revogar permissões, você precisa ter as permissões necessárias para executar a declaração REVOKE. Além disso, se você estiver revogando permissões de um usuário específico, certifique-se de que não haja outros usuários que dependam dessas permissões para acessar o banco de dados ou tabela.

Exemplos da declaração REVOKE SQL

Vejamos alguns exemplos:

1. Revogar todas as permissões do usuário fabio no banco de dados db_biblioteca:

REVOKE ALL PRIVILEGES ON db_biblioteca.* FROM 'fabio'@'localhost';

2. Revogar a permissão de seleção da tabela de editoras específica para o usuário:

REVOKE SELECT ON db_biblioteca.tbl_editoras FROM 'fabio'@'localhost';

3. Revogar a permissão de inserção na tabela de autores para um grupo de usuários:

REVOKE INSERT ON db_biblioteca.tbl_autores FROM 'grupo_usuarios'@'localhost';

4. Revogar todas as permissões do usuário fabio para todos os bancos de dados:

REVOKE ALL PRIVILEGES ON *.* FROM 'fabio'@'localhost';

Resumo

Em resumo, os comandos DCL em SQL são fundamentais para a segurança e integridade dos dados em um banco de dados.

Eles permitem que o administrador do banco de dados conceda ou revogue permissões de acesso para usuários e grupos de usuários, controlando quem pode visualizar, modificar ou excluir dados específicos. Além disso, os comandos DCL incluem recursos importantes, como a definição de papéis e políticas de segurança para proteger dados sensíveis.

Por isso, é importante que os desenvolvedores e administradores de bancos de dados tenham conhecimento desses comandos para garantir a segurança dos dados armazenados.

 

Sair da versão mobile