Controle de Acesso no MySQL: Tutorial sobre os Comandos GRANT e REVOKE
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.