Declaração MySQL GRANT
A instrução GRANT
no MySQL é usada para atribuir privilégios às contas de usuário do MySQL. Ele define quais operações os usuários podem executar em objetos de banco de dados, como tabelas e exibições, garantindo o acesso controlado ao banco de dados.
Uso
A instrução GRANT
é usada quando você precisa dar permissões a usuários específicos para executar determinados tipos de operações SQL. Ele ajuda a gerenciar os direitos do usuário de forma eficiente e segura.
GRANT privileges
ON database_name.table_name
TO 'user'@'host'
[IDENTIFIED BY 'password'];
Nessa sintaxe, privileges
são as permissões concedidas, database_name.table_name
especifica o escopo, user
é o nome de usuário do MySQL e host
é o local a partir do qual o usuário se conecta. Observe que a cláusula IDENTIFIED BY 'password'
só é aplicável ao criar um novo usuário. No MySQL 8.0 e posterior, recomenda-se que você use CREATE USER
seguido de GRANT
para a criação de usuários e atribuição de privilégios.
Exemplos
1. Concessão de privilégios básicos
GRANT SELECT, INSERT
ON mydb.mytable
TO 'user1'@'localhost';
Este exemplo concede a você os privilégios SELECT
e INSERT
em mydb.mytable
para user1
conectando-se a partir de localhost
.
2. Concessão de todos os privilégios em um banco de dados
GRANT ALL PRIVILEGES
ON mydb.*
TO 'user2'@'192.168.1.1';
Aqui, o user2
recebe todos os privilégios em todo o banco de dados mydb
do host 192.168.1.1
.
3. Concessão de privilégios com senha
GRANT SELECT, UPDATE
ON mydb.mytable
TO 'user3'@'%' IDENTIFIED BY 'securepassword';
Essa instrução concede a SELECT
e UPDATE
privilégios em mydb.mytable
a user3
de qualquer host (%
), definindo uma senha especificada. O uso do %
permite conexões de qualquer host, o que pode ter implicações de segurança.
Informações adicionais
Privilégios globais
Para conceder privilégios globais que se aplicam a todos os bancos de dados, use a sintaxe ON *.*
. Isso concede os privilégios especificados globalmente.
Revogação de privilégios
Para revogar privilégios, use o comando REVOKE
:
REVOKE privileges
ON database_name.table_name
FROM 'user'@'host';
Isso remove os privilégios especificados do usuário.
Dicas e práticas recomendadas
- Limite os privilégios. Conceda apenas os privilégios necessários aos usuários para minimizar os riscos de segurança.
- Use nomes de host específicos. Sempre que possível, especifique nomes de host ou endereços IP para restringir o acesso, em vez de usar
%
para todos os hosts. - Gerencie as senhas com segurança. Sempre use senhas fortes e exclusivas ao configurar contas de usuário.
- Revise regularmente as permissões. Faça auditorias periódicas e revogue privilégios desnecessários para manter a segurança ideal. Utilize a tabela
mysql.user
ou as visualizações do esquema de informações relevantes para analisar os privilégios de usuário existentes. - Alterações no documento. Mantenha um registro de todas as declarações
GRANT
emitidas para facilitar o rastreamento das permissões.