Gerenciamento de Usuários e Controle de Acessos Do MySQL
Gerenciamento de Usuários e Controle de Acessos Do MySQL
Gerenciamento de Usuários e Controle de Acessos Do MySQL
Entenda o site
Tecnologias
Revistas LO GIN:
Cursos
Frum
Servios
Publicar
Compre Crditos
Loja Virtual
A ssine
C adastre -se
post favorito
comentrios
Go s t ei (2)
(1)
Curtir
Privilgio
Descrio
ALL [PRIVILEGES]
www.devmedia.com.br/gerenciamento-de-usuarios-e-controle-de-acessos-do-mysql/1898
1/5
15/05/13
ALTER
CREATE
DELETE
DROP
EXECUTE
FILE
INDEX
INSERT
LOCK TABLES
Permite executar LOCK TABLES em tabelas que voc tenha o privilgio SELECT
PROCESS
REFERENCES
RELOAD
REPLICATION CLIENT
REPLICATION SLAVE
Necessrio para a replicao Slave (leitura dos eventos do log binrio do Master)
SELECT
SHOW DATABASES
SHUTDOWN
Permite executar CHANGE MASTER, KILL , PURGE MASTER SUPER LOGS e SET GLOBAL. Permite conectar-se ao servidor uma vez, mesmo que o max_connections tenha sido atingido
UPDATE
www.devmedia.com.br/gerenciamento-de-usuarios-e-controle-de-acessos-do-mysql/1898
2/5
15/05/13
USAGE
GRANT OPTION
Uma vez informados os privilgios do usurio, voc dever indicar o nvel ao qual o privilgio se aplica, sendo possvel especificar trs nveis:
*.*
Privilgio global
db.*
Apenas a tabela tb do banco de dados db. Para db.tb especificar apenas algumas colunas de uma determinada tabela, estas devero ser listadas ao lado do privilgio (priv (colunas))
Depois do nvel voc dever indicar o usurio, ou a lista de usurios, para os quais os privilgios se aplicam. No MySQL o usurio constitudo de um nome mais o host de onde ele poder acessar o servidor (user@host). Caso voc no informe o host para o usurio, o MySQL assumir "%", isto , todos os hosts. A senha do usurio opcional, mas recomendado sempre inform-la no momento de criao do usurio, por questes de segurana. Para adicionar privilgios a um usurio existente o IDENTIFIED BY poder ser omitido. No exemplo a seguir criado um usurio com o nome teste que pode se conectar somente do host onde o servidor est em execuo (localhost), o usurio s poder fazer SELECT nas colunas nome e idade da tabela pessoa, que se encontra no banco de dados rh. A senha do usurio 12345. mysql>GRANT SELECT (nome, idade) ON rh.pessoa TO teste@localhost IDENTIFIED BY "12345"; Para listar os privilgios deste usurio utilize o comando: mysql>SHOW GRANTS FOR teste@localhost; Voc pode especificar um conjunto de hosts utilizando o caracter "%", neste caso possvel dar acesso a um usurio dentro de uma faixa de IPs ou DNS. Usurios annimos tambm podem ser criados informando um nome com o caracter espao (" "). No exemplo a seguir, o usurio remoto poder executar UPDATE e INSERT em qualquer tabela do banco de dados rh, sendo possvel a conexo ao servidor a partir de qualquer mquina no domnio mysqlbrasil.com.br: mysql>GRANT UPDATE, INSERT ON rh.* TO remoto@"%.mysqlbrasil.com.br" IDENTIFIED BY "remoto"; Ou utilizando IP: mysql>GRANT UPDATE, INSERT ON rh.* TO remoto@"200.236.13.%" IDENTIFIED BY "remoto"; Um usurio annimo com os mesmos privilgios do usurio remoto seria criado da seguinte forma: mysql>GRANT UPDATE, INSERT ON rh.* TO " "@"%mysqlbrasil.com.br" IDENTIFIED BY "anonimo"; Finalmente, a opo GRANT OPTION utilizada para que o usurio possa conceder os seus privilgios para outros usurios do banco. Alm disto, voc poder limitar os recursos do usurio com as opes MAX_QUERIES_PER_HOUR, MAX_UPDATES_PER_HOUR ou MAX_CONNECTIONS_PER_HOUR. Para remover um privilgio do usurio utilize o comando REVOKE mostrado abaixo: REVOKE priv [(colunas)] [, priv [(colunas)]] ... ON {*.* | db.* | db.tabela} FROM usuario [, usuario] ... Lembre-se de que a parte ON do REVOKE dever coincidir com a parte ON do GRANT que voc deseja remover, caso isto no se verifique o comando REVOKE no ter efeito algum. Alm disto, o comando REVOKE remove apenas os privilgios do usurio, mas o usurio continuar existindo. A remoo do usurio dever ser feita com um DELETE explcito na tabela de usurios do MySQL, aps terem sido Removidos todos os seus privilgios com o comando REVOKE. Observe que para remover o usurio voc dever ter privilgio para executar DELETE na tabela user do mysql. Geralmente, esta tarefa executada pelo administrador do banco (root). mysql>DELETE FROM mysql.user WHERE user="teste" AND host="localhost";
www.devmedia.com.br/gerenciamento-de-usuarios-e-controle-de-acessos-do-mysql/1898
3/5
15/05/13
memria. mysql>FLUSH PRIVILEGES;
Feito isto, voc ter que executar um comando FLUSH PRIVILEGES para que o MySQL possa atualizar os privilgios que esto em
Aqui estamos descrevendo os comandos para a manipulao de usurios, sendo que esta a maneira de entendermos como funciona a criao de usurios no MySQL. Uma forma mais intuitiva para executar esta tarefa pode ser encontrada no MySQL Administrator, que foi apresentado no ltimo artigo. Problemas para a conexo com o MySQL a partir do localhost: Ao instalar o MySQL so criados o usurio root com todos os privilgios (administrador), podendo se conectar somente do host local sem senha, e o usurio annimo com privilgios apenas no banco de dados test, que pode se conectar apenas do host local sem senha. Para autentiticar um usurio durante a conexo com o servidor, o MySQL armazena em memria a listas de todos usurios, hosts e senhas cadastrados no banco e as ordena do host mais especfico para o menos especfico. Caso existam dois hosts iguais, os usurios mais especficos viro antes do usurio annimo. Feito isto, a cada conexo ser pesquisada nesta lista a primeira ocorrncia que coincida o host, usurio e senha informados no momento da tentativa de conexo. Tomemos o caso em que aps a instalao do MySQL, criamos um usurio que possa se conectar a partir de qualquer host dentro do domnio onde se encontra o servidor MySQL: mysql>GRANT ALL ON rh.* TO user@"192.168.0.%" IDENTIFIED BY "12345"; Neste caso, o MySQL cria em memria a lista dos usurios da seguinte forma: Usurio Senha root@localhost " "@localhost user@"192.168.0.%" 12345 Este usurio ser capaz de se conectar ao servidor MySQL a partir de qualquer mquina no domnio, exceto o host local, pois neste caso, ao pesquisar na lista pelo user@localhost, a primeira ocorrncia encontrada a do usurio annimo, j que qualquer usurio pode ser considerado annimo pelo MySQL. O detalhe que as senhas destes usurios no coincidem, o que gera um erro de "Acesso Negado". Para evitar a situao acima voc dever excluir o usurio annimo ou adicionar o mesmo usurio para se conectar remoto e a partir do host local, da seguinte forma: mysql>GRANT ALL ON rh.* TO user@"192.168.0.%" IDENTIFIED BY "12345", user@localhost IDENTIFIED BY "12345"; Assim a ordenao ficaria: Usurio Senha root@localhost user@localhost 12345 " "@localhost user@"192.168.0.%" 12345 Desta forma, o primeiro registro encontrado no mais o usurio annimo e sim o user@localhost, portanto a conexo ser estabelecida com sucesso. Para evitar este tipo de transtorno melhor remover o usurio annimo aps a instalao do servidor, eliminando tambm eventuais problemas de segurana. Abraos e at a prxima! Eber M. Duarte
Eber Duarte
Eber Duarte bacharel em Cincia da Computao, ps-graduado em Engenharia Eltrica e MySQL Professional Certified. Trabalha h 3 anos na EAC Softw are (BH/MG) como Analista e desenvolvedor de sistemas, atuando especialmente no desenvolvimento de sistemas Web. Atualmente, tambm consultor e instru...
www.devmedia.com.br/gerenciamento-de-usuarios-e-controle-de-acessos-do-mysql/1898
4/5
15/05/13
0 COMENTRIO
Cursos relacionados
Administrao do Firebird/InterBase C urso de Administrao do Microsoft SQL Server Ferramentas Administrativas do MySQL PL/SQL Oracle Administrao do Firebird/InterBase [Ver todos]
+SQL
Publicidade
Servios
Inclua um comentrio Adicionar aos Favoritos Marcar como lido/assistido Incluir anotao pessoal Verso para impresso
(ajuda)
DevMedia
Curtir Voc curtiu isso.
Voc e outras 8.532 pessoas curtiram DevMedia. DevMedia | Anuncie | Fale conosco Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Dire itos R e se rvados a web-03
P lug-in social do F acebook
www.devmedia.com.br/gerenciamento-de-usuarios-e-controle-de-acessos-do-mysql/1898
5/5