Primeiramente pesquisei a existência de Roles no MySQL com o no PostgreSQL e SQL Server, ate o MySQL 5.0 não identifiquei a existência de Roles, assim apenas criando usuários e permissões.
Utilizei a interface MySQL Query Browser que mesmo com interface criasse em linha de comando, e para se criar um usuario utiliza-se da seguinte sintaxe:
GRANT
ON .
TO ''@'dominio' IDENTIFIED BY 'senha'
WITH GRANT OPTION;
FLUSH PRIVILEGES;
Em uso:
GRANT all privileges
ON *.*
TO dba@localhost IDENTIFIED BY 'root';
FLUSH PRIVILEGES;
Onde o GRANT vai garantir os privilégios, e o 'all privileges' concede todos os privilégios a esse usuário, *.* diz respeito a todas as tabelas e possui a senha 'root', logo esse usuário 'dba' tem acesso a todos os bancos e assim pode fazer todas as funcionalidades do SGBD. Caso queira dar permissão desse usuário criar outros usuário adiciona logo apos a senha o comando WITH GRANT OPTION.
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.
Após a execução de cada comando GRANT é necessário executar o comando FLUSH PRIVILEGES,onde tem a função de atualizar a lista de privilégios, que mudar/setar algum tipo de permissão no MySQL faz necessário o utilizar esse comando.
Para a visualizar qual permissão um determinado usuário possui utiliza:
SHOW GRANTS FOR dba@localhost;
Para a visualizar todos os usuários:
SELECT User FROM mysql.user;
Para a negar a permissão a um determinado usuário utiliza-se do REVOKE:
REVOKE all privileges, grant option
FROM 'dba'@'localhost';
FLUSH PRIVILEGES;