MySQL:
Controle de Acesso
Programação de Servidores
Marx Gomes Van der Linden
http://marx.vanderlinden.com.br/
Controle de Acesso



MySQL tem um sistema de controle de acesso
de usuários que é independente do sistema de
usuários empregado pelo sistema operacional.
Permite controle preciso de restrições e
privilégios para uso, modificação e exclusão de
dados.
Em uma nova instalação de MySQL só há um
usuário: root.
http://marx.vanderlinden.com.br/
2
CREATE USER



Para criar um novo usuário no sistema, utilizase o comando CREATE USER.
Sintaxe:
CREATE USER conta
[IDENTIFIED BY senha]
http://marx.vanderlinden.com.br/
3
Conta



Um usuário em MySQL é especificado por uma
conta, que define o nome do usuário e o
servidor de acesso.
Formato:
 'usuário'[@'servidor']
No nome do servidor, pode ser usado um
padrão, de acordo com a sintaxe de LIKE.

Padrão para o nome do servidor: '%'
http://marx.vanderlinden.com.br/
4
Exemplos
mysql> CREATE USER 'boris'@'localhost'
-> IDENTIFIED BY 'frost';
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE USER 'fred'@'ares.mars.net'
-> IDENTIFIED BY 'steam';
Query OK, 0 rows affected (0.00 sec)
http://marx.vanderlinden.com.br/
5
Exemplos
mysql> CREATE USER 'joe'@'%'
-> IDENTIFIED BY 'tatu';
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE USER 'mary'@'%.snake.net'
-> IDENTIFIED BY 'fog';
Query OK, 0 rows affected (0.00 sec)
http://marx.vanderlinden.com.br/
6
Exemplos
mysql> CREATE USER 'joe'@'192.168.128.3'
-> IDENTIFIED BY 'water';
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE USER 'ardis'@'192.168.128.%'
-> IDENTIFIED BY 'snow';
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE USER
-> 'rex'@'192.168.128.0/255.255.255.0'
-> IDENTIFIED BY 'ice';
Query OK, 0 rows http://marx.vanderlinden.com.br/
affected (0.01 sec)
7
DROP USER, RENAME USER


Para remover um usuário do sistema:
 DROP USER nome
Para renomear um usuário:
 RENAME USER nome_antigo
TO nome_novo
http://marx.vanderlinden.com.br/
8
GRANT



Para especificar os privilégios de uma conta de
usuário, utiliza-se o comando GRANT.
Sintaxe:
GRANT privilégios (campos)
ON nível
TO conta [IDENTIFIED BY senha]
[REQUIRE requerimentos de conexão]
[WITH opções];

Se a conta especificada já não existir, ela é criada.
http://marx.vanderlinden.com.br/
9
Privilégios




O controle específico de acesso em MySQL é
definido por uma série de privilégios.
Cada privilégio define um tipo de ação que um
usuário pode executar.
Cada usuário pode ter uma combinação de um
ou mais privilégios.
Há duas categorias principais de privilégios:


Privilégios Administrativos.
Privilégios de Bancos de Dados e Tabelas.
http://marx.vanderlinden.com.br/
10
Privilégios Administrativos

CREATE USER

Permite o uso dos comandos CREATE USER,
DROP USER, RENAME USER, e REVOKE ALL
PRIVILEGES.
http://marx.vanderlinden.com.br/
11
Privilégios Administrativos

FILE


Permite executar ações que acessam
arquivos do servidor.
Retrições:
 Só podem ser lidos arquivos com
permissões de leitura para todos.
 Não é possível sobrescrever arquivos préexistentes.
http://marx.vanderlinden.com.br/
12
Privilégios Administrativos

GRANT OPTION

Possibilita passar para outros usuários os
mesmos privilégios que o usuário tem,
inclusive GRANT OPTION.
Deve ser especificado na cláusula WITH.
PROCESS



Permite usar o comando SHOW
PROCESSLIST, para ver todas as threads
usadas por qualquer usuário conectado ao
MySQL no momento.
http://marx.vanderlinden.com.br/
13
Privilégios Administrativos

RELOAD
Permite executar várias operações de
controle administrativo, como FLUSH (usado
para limpar caches) e RESET (usado para
limpar caches e excluir logs)
SHOW DATABASES



Permite usar o comando SHOW DATABASES,
para ver os nomes de todos os bancos de
dados instalados no sistema.
http://marx.vanderlinden.com.br/
14
Privilégios Administrativos

SHUTDOWN
Permite desligar o servidor (comando
mysqladmin shutdown)
SUPER



Permite terminar threads de outros usuários
utilizando o comando KILL.
http://marx.vanderlinden.com.br/
15
Privilégios de BDs e Tabelas

ALTER
Permite usar ALTER TABLE.
CREATE


Permite usar CREATE TABLE.
CREATE TEMPORARY TABLES



CREATE VIEW

DELETE
http://marx.vanderlinden.com.br/
16
Privilégios de BDs e Tabelas

DROP

Permite o uso de DROP DATABASE e DROP
TABLE
Não permite o uso de DROP INDEX
INDEX


Permite o uso de CREATE INDEX e DROP INDEX
INSERT



SELECT

SHOW VIEW

Permite o uso de SHOW CREATE VIEW
http://marx.vanderlinden.com.br/
17
Privilégios Especiais

ALL [PRIVILEGES]
Todos os privilégios
USAGE



Nenhum privilégio
http://marx.vanderlinden.com.br/
18
Nível do Privilégio

ON *.*
Todos os objetos, em todos os bancos de
dados
ON *




Se não há um BD selecionado, mesmo que
*.*
Se há um BD selecionado, privilégio global
para este BD apenas.
http://marx.vanderlinden.com.br/
19
Nível do Privilégio

ON nomebd.*
Privilégio global para o BD especificado.
ON nomebd.nometabela



ON nometabela

Privilégio para a tabela especificada.
http://marx.vanderlinden.com.br/
20
Exemplos

Superusuário:
mysql> GRANT ALL ON *.* TO
-> 'jacob'@'localhost'
-> WITH GRANT OPTION;
Query OK, 0 rows affected (0.06 sec)
http://marx.vanderlinden.com.br/
21
Exemplos

Usuário limpador de logs e caches.
mysql> GRANT RELOAD ON *.* TO
-> 'flush'@'localhost';
Query OK, 0 rows affected (0.06 sec)
http://marx.vanderlinden.com.br/
22
Exemplos

Usuário com totais poderes, restritos a um BD.
mysql> GRANT ALL ON webdb.* TO
-> 'fulano'@'provedor.com.br';
Query OK, 0 rows affected (0.06 sec)
http://marx.vanderlinden.com.br/
23
Exemplos

Usuário com permissões de leitura em um BD:
mysql> GRANT SELECT ON webdb.* TO
-> 'leitor'@'%';
Query OK, 0 rows affected (0.06 sec)
http://marx.vanderlinden.com.br/
24
Exemplos

Usuário com permissões específicas em um
BD:
mysql> GRANT SELECT,INSERT,DELETE,UPDATE
-> ON webdb.* TO
-> 'webdeveloper'@'%';
Query OK, 0 rows affected (0.06 sec)
http://marx.vanderlinden.com.br/
25
Exemplos

Usuário com permissões específicas em
tabelas e campos.
mysql> GRANT SELECT, UPDATE
-> (rua,numero,bairro,cep)
-> ON webdb.endereco TO
-> 'assistente'@'localhost';
Query OK, 0 rows affected (0.06 sec)
http://marx.vanderlinden.com.br/
26
Requerimentos de Conexão

A opção REQUIRE permite especificar o tipo de
conexão segura pela qual é aceitável que o
usuário se conecte.
http://marx.vanderlinden.com.br/
27
Requerimentos de Conexão

REQUIRE NONE
Sem requerimentos especiais
REQUIRE SSL


Aceita apenas conexões seguras por SSL
REQUIRE X509



Aceita apenas conexões em que o cliente
possa se identificar por um certificado de
chave pública X.509
http://marx.vanderlinden.com.br/
28
Uso de Recursos



A opção WITH pode ser usada para aplicar
restrições adicionais ao usuário.
Estas restrições limitam a quantidade de
recursos que cada cliente pode utilizar no
servidor.
Para cada opção, 0=ilimitado
http://marx.vanderlinden.com.br/
29
Uso de Recursos

MAX_QUERIES_PER_HOUR numero


MAX_UPDATES_PER_HOUR numero


Número máximo máximo de atualizações no BD
por hora
MAX_CONNECTIONS_PER_HOUR numero


Número máximo de consultas por hora
Número máximo de conexões realizadas ao BD por
hora.
MAX_USER_CONNECTIONS numero

Número máximohttp://marx.vanderlinden.com.br/
de conexões simultâneas.
30
Exemplos
mysql> GRANT SELECT, UPDATE
-> (rua,numero,bairro,cep)
-> ON webdb.endereco TO
-> 'assistente'@'localhost'
-> REQUIRE SSL
-> WITH MAX_QUERIES_PER_HOUR 1000
->
MAX_USER_CONNECTIONS 5;
Query OK, 0 rows affected (0.06 sec)
http://marx.vanderlinden.com.br/
31
Mudando a senha


Para mudar a senha de um usuário, é possível
usar o comando SET PASSWORD.
Sintaxe:
 SET PASSWORD FOR usuário =
PASSWORD(senha)
http://marx.vanderlinden.com.br/
32
Download

19 - MySQL: Controle de Acesso