quarta-feira, 9 de novembro de 2011

Permissões de usuários no MYSQL

Direitos de acesso no MySQL

O grant possui as seguintes opções de acesso:
* ALL/ALL PRIVILEGES – Simboliza todos os privilégios abaixo;
* ALTER – Permite alterar a estrutura de tabelas;
* ALTER ROUTINE – Permite alterar e excluir stored procedures/functions;
* CREATE – Permite criar banco de dados e tabelas;
* CREATE ROUTINE – Permite criar stored procedures/functions;
* CREATE TEMPORARY TABLES – Permite a criação de tabelas temporárias em expressões SQL que utilizam esse recurso;
* CREATE USER – Permite criar e gerenciar usuários;
* CREATE VIEW – Permite criar visões;
* DELETE – Permite excluir informações;
* DROP – Permite excluir estruturas (bases e tabelas);
* EVENT – Permite criar event schedulers;
* EXECUTE – Permite executar stored procedures;
* FILE – Permite ler e escrever arquivos no sistema;
* GRANT – Permite cadastrar seus privilégios para outros usuários;
* INDEX – Permite o gerenciamento de índices;
* INSERT – Permite inserir informações em tabelas;
* LOCK TABLES – Permite bloquear tabelas;
* PROCESS – Permite visualizar e finalizar processos do MySQL;
* RELOAD – Permite recarregar bancos de dados;
* REPLICATION CLIENT – Permite solicitar replicação;
* REPLICATION SLAVE – Permite replicar suas informações;
* SELECT – Permite consultas;
* SHOW DATABASES – Permite visualizar todas as estruturas dos bancos existentes;
* SHOW VIEW – Permite visualizar os códigos de criação de visões;
* SHUTDOWN – Permite desligar o servidor MySQL;
* SUPER – Permite configurar os dados do servidor MASTER (em caso de replicação);
* TRIGGER – Permite criar e gerenciar triggers;
* UPDATE – Permite alterar informações em tabelas;
* USAGE – Permite utilizar comandos básicos.
A sintaxe do grant é a seguinte:
1grant <privilégios> on <banco>.<tabela> to '<usuario>'@'<dominio>' identified by '<senha>'
Agora criaremos um usuário com os mesmos privilégios do root:
1mysql> CREATE USER dba;
2mysql> GRANT ALL PRIVILEGES ON *.* TO dba@\'localhost\' IDENTIFIED BY 'passworddba';
E um usuário para somente leitura:
1mysql> CREATE USER estagiario;
2mysql> GRANT SELECT ON minha_base.* TO 'estagiario'@'%' IDENTIFIED BY 'estag';
O parâmetro “%” representa qualquer domínio, ou seja, o usuário estagiário para consultar todas as tabelas de “minha_base” mediante a senha “estag”. Caso você deseje consultar os privilégios do usuário poderemos utilizar o seguinte comando (repare que no campo de senha é gerado um hash, como explicado anteriormente):
1mysql> SHOW GRANTS FOR 'estagiario'@'%';
2 
3GRANT SELECT ON `minha_base`.* TO 'estagiario'@'%'
Sempre que mudar/setar algum tipo de permissão no MySQL, o comando de atualiza a lista de privilégios faz-se necessário:
1mysql> FLUSH PRIVILEGES;
Caso o estagiário esteja abusando com os “selects” da vida, podemos retirar os direitos de acesso com o comando REVOKE, veja:
1mysql> REVOKE SELECT ON minha_base.* FROM 'estagiario'@'%';
Ainda se for necessário, podemos excluir ou alterar a senha desse usuário:
1mysql> SET PASSWORD FOR 'estagiario' = PASSWORD('nova_senha');
2mysql> DROP USER 'estagiario';

Nenhum comentário:

Postar um comentário