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.