Controle de Acesso no MySQL: Tutorial sobre os Comandos GRANT e REVOKE

Por Gaspar Barancelli Junior em 23 de abril de 2024

Quando se trata de gerenciar um banco de dados MySQL, garantir que apenas as pessoas certas tenham acesso aos dados é fundamental para a segurança e a integridade. O MySQL fornece dois comandos cruciais para isso: GRANT e REVOKE. Vamos explorar como esses comandos funcionam e como você pode usá-los para administrar permissões de usuário ou role de forma eficaz.

Criação de Usuário e Role

Criando um Usuário:

O comando CREATE USER é usado para criar um novo usuário no MySQL.

Sintaxe:
CREATE USER 'nome_usuario'@'localhost' IDENTIFIED BY 'senha';
Exemplo:

Vamos criar um usuário chamado murilo com a senha blog-gaspar-barancelli:

CREATE USER 'murilo'@'localhost' IDENTIFIED BY 'blog-gaspar-barancelli';

Criando uma Role:

O comando CREATE ROLE é usado para criar uma nova função (role) no MySQL.

Sintaxe:
CREATE ROLE 'nome_da_role';
Exemplo:

Vamos criar uma role chamada usuario_aplicativo:

CREATE ROLE 'usuario_aplicativo';

Adicionando um usuário a uma função:

Sintaxe:
GRANT role TO 'usuario'@'localhost';
Exemplo:

Vamos adicionar o usuário murilo à função usuario_aplicativo:

GRANT usuario_aplicativo TO 'murilo'@'localhost';

Comando GRANT

O comando GRANT é usado para conceder privilégios específicos a usuários ou roles do MySQL. Isso pode variar desde privilégios amplos, como a capacidade de criar ou excluir bancos de dados, até permissões mais específicas, como a capacidade de inserir ou atualizar dados em uma tabela específica.

Concedendo privilégios a um usuário:

Sintaxe:
GRANT privilégios ON nome_do_banco_de_dados.nome_da_tabela TO 'usuario'@'localhost';

Se você deseja conceder permissões em todos os bancos de dados, você pode usar um asterisco (*) no lugar do nome do banco de dados.

Exemplo:

Vamos supor que queremos conceder a um usuário chamado gaspar o privilégio de selecionar, inserir e atualizar dados na tabela post do banco de dados blog:

GRANT SELECT, INSERT, UPDATE ON blog.post TO 'gaspar'@'localhost';

Suponha que você queira conceder ao usuário 'laura' todos os privilégios em todos os bancos de dados:

GRANT ALL PRIVILEGES ON *.* TO 'laura'@'localhost';

Concedendo privilégios a uma função:

Sintaxe:
GRANT privilégios ON nome_do_banco_de_dados.nome_da_tabela TO 'role';
Exemplo:

Vamos supor que queremos conceder a uma função chamada usuario_aplicativo o privilégio de selecionar dados na tabela autores do banco de dados blog:

GRANT SELECT ON blog.autores TO 'usuario_aplicativo';

Comando REVOKE

O comando REVOKE é usado para retirar os privilégios concedidos anteriormente por meio do comando GRANT.

Revogando privilégios de um usuário:

Sintaxe:
REVOKE privilégios ON nome_do_banco_de_dados.nome_da_tabela FROM 'usuario'@'localhost';
Exemplo:

Vamos revogar os privilégios que concedemos ao usuário gaspar anteriormente:

REVOKE SELECT, INSERT, UPDATE ON blog.post FROM 'gaspar'@'localhost';

Revogando privilégios de uma função:

Sintaxe:
REVOKE privilégios ON nome_do_banco_de_dados.nome_da_tabela FROM 'role';
Exemplo:

Vamos revogar os privilégios que concedemos à função usuario_aplicativo anteriormente:

REVOKE SELECT ON blog.autores FROM 'usuario_aplicativo';

Removendo um usuário de uma função:

Sintaxe:
REVOKE role FROM 'usuario'@'localhost';
Exemplo:

Vamos remover o usuário murilo da função usuario_aplicativo:

REVOKE usuario_aplicativo FROM 'murilo'@'localhost';

Deletar Usuário e Role

Deletando uma Role:

O comando DROP ROLE é usado para deletar uma role no MySQL.

Sintaxe:
DROP ROLE 'nome_da_role';
Exemplo:

Vamos remover a role usuario_aplicativo:

DROP ROLE 'usuario_aplicativo';

Deletando um Usuário:

O comando DROP USER é usado para deletar um novo usuário no MySQL.

Sintaxe:
DROP USER 'nome_do_usuario'@'localhost';
Exemplo:

Vamos remover o usuário murilo:

DROP USER 'murilo'@'localhost';

Lista de Privilégios:

Aqui está uma lista dos privilégios mais comuns que você pode conceder aos usuários ou roles do MySQL:

  • ALL PRIVILEGES: Concede todos os privilégios para um banco de dados ou uma tabela.

  • SELECT: Permite ler registros.

  • INSERT: Permite inserir novos registros em uma tabela.

  • UPDATE: Permite atualizar registros existentes.

  • DELETE: Permite excluir registros.

  • CREATE: Permite criar novos bancos de dados e tabelas.

  • DROP: Permite excluir bancos de dados e tabelas.

  • GRANT OPTION: Permite ao usuário conceder ou remover privilégios para outros usuários.

Esses privilégios oferecem uma flexibilidade essencial para gerenciar a segurança e a integridade dos seus bancos de dados MySQL.

Conclusão

Os comandos GRANT e REVOKE do MySQL são essenciais para administradores de bancos de dados que desejam controlar o acesso aos dados de forma precisa e segura. Ao utilizar esses comandos, você pode garantir que apenas as pessoas certas tenham acesso aos dados certos, garantindo a integridade e a segurança dos seus bancos de dados MySQL. Utilize esses comandos com sabedoria para manter seu sistema seguro e eficiente.

// Compartilhe esse Post

💫
🔥 NOVO APP

Domine o Inglês em 30 dias!

Inteligência Artificial + Repetição Espaçada • Método cientificamente comprovado

✅ Grátis para começar 🚀 Resultados rápidos
×