Vamos ver como conceder permissões (chamadas de privilégios) a um usuário do banco de dados MySQL
Por padrão quando você cria um novo usuário MySQL usando a sintaxe
CREATE USER '<username>'@'localhost' IDENTIFIED BY '<password>';
o usuário não pode fazer muito. Podemos dizer que não pode a nada, na verdade.
Ele não pode ler dados de nenhum banco de dados existente, muito menos modificar os dados. E não pode nem criar um novo banco de dados.
Para obrigar um usuário a fazer qualquer coisa, você precisa conceder privilégios para isso.
Você pode fazer isso usando o
GRANT
comando. Podemos usar
GRANT <permission>
, usando as seguintes palavras-chave de permissão:CREATE
DROP
DELETE
INSERT
SELECT
UPDATE
ALL PRIVILEGES
Conceder privilégio para criar novos bancos de dados a um usuário
GRANT CREATE ON *.* TO '<username>'@'localhost';
Conceder privilégios a um usuário para criar novas tabelas em um banco de dados específico
GRANT CREATE ON <database>.* TO '<username>'@'localhost';
Conceder privilégio para ler (consultar) um banco de dados específico a um usuário
GRANT SELECT ON <database>.* TO '<username>'@'localhost';
Conceder privilégio para ler um banco de dados específico table para um usuário
GRANT SELECT ON <database>.<table> TO '<username>'@'localhost';
Conceder privilégio para inserir, atualizar e excluir linhas em um banco de dados específico para um usuário
GRANT INSERT, UPDATE, DELETE ON <database>.* TO '<username>'@'localhost';
Conceder privilégio para excluir tabelas em um banco de dados específico para um usuário
GRANT DROP ON <database>.* TO '<username>'@'localhost';
Conceder privilégio para excluir bancos de dados a um usuário
GRANT DROP ON *.* TO '<username>'@'localhost';
Conceder todos os privilégios em um banco de dados específico a um usuário
GRANT ALL PRIVILEGES ON <database>.* TO '<username>'@'localhost';
Conceder todos os privilégios a um usuário
GRANT ALL PRIVILEGES ON *.* TO '<username>'@'localhost';
Revogar um privilégio
Exemplo para revogar o
DROP
privilégio em <database>
:REVOKE DROP ON <database>.* TO '<username>'@'localhost';
Para revogar todos os privilégios, execute:
REVOKE ALL PRIVILEGES ON *.* TO '<username>'@'localhost';
Você pode visualizar os privilégios de um único usuário executando:
SHOW GRANTS FOR '<username>'@'localhost';