segunda-feira, 3 de junho de 2013

Criando um usuário no SGBD MySQL 5.0

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;