Comandos DCL SQL e sua sintaxe

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:

  • permissão(s) é a permissão ou conjunto de permissões que você deseja conceder, como SELECT, INSERT, UPDATE, DELETE, ALL PRIVILEGES, etc.
  • nome_banco.nome_tabela é o nome do banco de dados e da tabela em que você deseja conceder as permissões.
  • ‘usuario’@’host’ é o nome do usuário e o host (nome da máquina, como localhost ou ainda um endereço IP) a quem você deseja conceder as permissões.
  • IDENTIFIED BY ‘senha’ é a senha para o usuário especificado.

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:

  • permissão(s) são as permissões que queremos revogar, como SELECT, INSERT, UPDATE, DELETE, ALL PRIVILEGES, etc.
  • nome_banco_dados.nome_tabela é o nome do banco de dados e tabela em que você deseja revogar as permissões.
  • ‘usuario’@’host’ é o nome do usuário e o host (como localhost ou um endereço IP) de quem você deseja revogar as permissões.

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.

 

Sobre Fábio dos Reis (1195 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.

Escreva um comentário

Seu e-mail não será divulgado


*