BD2 A09 Aula Privilegios

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 30

Criar usuário e conceder privilégios

no MariaDB e MySQL

1
Criar novo usuário
CREATE USER
CREATE USER 'novousuario'@'localhost' IDENTIFIED BY 'password';

Neste momento o novousuario não tem permissão para fazer


nada com as bases de dados.

Ao tentar fazer login ele não conseguirá acessar o shell.

2
Privilégios – GRANT, DENY e REVOKE

GRANT - Concessão de privilegio


Através do comando GRANT é possível conceder privilegio a um usuário
(atribuir permissão ao user, para realizar uma operação)

DENY - Nega permissão a um usuário ou grupo para realizar operação em


um objeto ou recurso

REVOKE - Exclusão de privilégio


Através do comando REVOKE é possível retirar um privilegio de um
usuário (remove a permissão GRANT ou DENY)
3
Privilégios – GRANT, DENY e REVOKE
Sintaxe
GRANT privilégio TO usuário_ou_role;

DENY privilégio TO usuário_ou_role;

REVOKE privilégio FROM usuário_ou_role;

4
Concedendo privilégios
GRANT TO

Após criar o usuário pode-se fornecer acesso às informações que


ele vai precisar.
GRANT [tipo de permissão] ON [nome da base de dados].[nome da
tabela] TO '[nome do usuário]'@'localhost';

5
Concedendo privilégios
GRANT TO

Exemplos:
GRANT SELECT ON aula10.farmacia TO 'edecio'@'localhost';
GRANT ALL PRIVILEGES ON *.* TO 'novousuario'@'localhost';

Obs.: Os asteriscos referem-se ao banco de dados e à tabela


(respectivamente) que o usuário poderá acessar.

O segundo exemplo específico permite ao usuário ler, editar,


executar e realizar todas as tarefas em todas as bases de dados e
tabelas. 6
Revogando privilégios

7
Revogando privilégios
REVOKE FROM
REVOKE [tipo de permissão] ON [nome da base de dados].[nome da
tabela] FROM '[nome do usuário]'@'localhost';

8
Recarregando privilégios
FLUSH

Uma vez finalizadas as permissões que você quer definir para os


seus novos usuários, recarregue todos os privilégios.

FLUSH PRIVILEGES;

9
Tipos de privilégios
(para usar com GRANT ou REVOKE)
CREATE - Criar novas tabelas ou bases de dados

DROP - Excluir tabelas ou bases de dados

ALTER - Alterar a estrutura das tabelas

SELECT - Realizar consultas SQL

INSERT - Inserir na tabela

10
Tipos de privilégios
(para usar com GRANT ou REVOKE)
UPDATE - Modificar a tabela

DELETE - Apagar linhas de uma tabela

INDEX - Gerenciar índices

GRANT OPTION - Conceder ou revogar privilégios de outros usuários

ALL PRIVILEGES - Todo o acesso a uma determinada base de dados


(ou se nenhuma base de dados for selecionada, todo o sistema)

11
Privilégio por campos

GRANT privilegio (campos) ON nivel TO user;

Exemplo:
GRANT SELECT (matricula, frequencia) ON fatec.alunos TO 'joao'@'localhost';

Permite ao usuário joao visualizar os campos matricula e


frequencia da tabela alunos da base de dados fatec.

12
Privilégios

Dica: Para conceder mais de um privilegio para um usuário ou


grupo basta separá-los por “ , ” .

Exemplo:
GRANT INSERT, UPDATE , DELETE ON cinema.* TO amanda;

13
Visualizar privilégios
SHOW
SHOW GRANTS FOR 'usuario'@'localhost';
SHOW GRANTS FOR 'root'@'localhost';
SHOW GRANTS FOR 'maicon'@'localhost';

14
Excluindo usuário

15
Excluindo usuário
DROP USER
DROP USER 'nomeusuario'@'localhost';

16
Exibindo os usuários do MySQL

SELECT * FROM mysql.user;

SELECT user FROM mysql.user;

17
Login e Logout
DROP

Logout
quit

Login
mysql -u [nome do usuário] -p

18
Alteração de usuários
Nome e Senha
Alterar nome
RENAME USER 'usuario'@'localhost' TO 'novo_nome'@'localhost';

19
Alteração de usuários
Nome e Senha
Alterar senha
SET password FOR 'usuario'@'localhost' = PASSWORD('nova_senha');
SET password FOR 'usuario'@'localhost’ = MD5('nova_senha');

SET password = PASSWORD('nova_senha’);


SET password = MD5('nova_senha');

20
Alteração de usuários
Nome e Senha
Alterar senha MySQL x MariaDB
MySQL
UPDATE mysql.user SET authentication_string =
PASSWORD('nova_senha') WHERE user='usuario' AND host='localhost’;
UPDATE mysql.user SET authentication_string = MD5('nova_senha')
WHERE user='usuario' AND host='localhost’;

MariaDB
UPDATE mysql.user SET password = PASSWORD('nova_senha') WHERE
user='usuario' AND host='localhost’;
UPDATE mysql.user SET password = MD5('nova_senha') WHERE
user='usuario' AND host='localhost'; 21
ROLE

São grupos de usuários que facilitam a administração das permissões dos


usuários, através desses papeis é possível agrupar usuários do mesmo tipo
facilitando a inclusão e ou remoção de privilégios.

TIPO_DO_PRIVILEGIO = Privilegio que será concedido


OBJETO = Objeto ao qual a permissão se refere (tabela, sequence ...)
USUARIO/ROLE = Indica que o usuário ou role receberá o privilegio

Ex.: CREATE ROLE nome_do_grupo;


Sintaxes

GRANT CREATE TABLE TO nome_do_usuario;


CREATE ROLE nome_do_grupo;
GRANT nome_do_grupo TO nome_do_usuario;
GRANT INSERT ON nome_da_tabela TO nome_do_usuario;
GRANT SELECT ON nome_da_tabela TO nome_do_usuario;
REVOKE EXECUTE ON nome_rotina FROM nome_do_usuario;
Exemplos

DROP SCHEMA IF EXISTS aula9;


CREATE SCHEMA aula9;
USE aula9;

CREATE TABLE categoria (


id INT NOT NULL AUTO_INCREMENT,
nome VARCHAR(45) NOT NULL,
PRIMARY KEY (id)
);
24
Exemplos

CREATE TABLE produto (


id INT NOT NULL AUTO_INCREMENT,
nome VARCHAR(45) NOT NULL,
idCategoria INT,
PRIMARY KEY (id),
CONSTRAINT fk_produto_categoria
FOREIGN KEY (idCategoria) REFERENCES categoria (id)
);

25
Exemplos

CREATE USER 'maicom'@'localhost' IDENTIFIED BY 'aleluia';


CREATE USER 'lucas'@'localhost' IDENTIFIED BY 'xiaomi';
CREATE USER 'amanda'@'localhost' IDENTIFIED BY 'crossfit';
CREATE USER 'cristopher'@'localhost' IDENTIFIED BY 'tupperware';
CREATE USER 'pedro'@'localhost' IDENTIFIED BY 'pedroeolobo';
CREATE USER 'adriano'@'localhost' IDENTIFIED BY 'tameouvindo';
CREATE USER 'bruno'@'localhost' IDENTIFIED BY 'emarroni';
CREATE USER 'edson'@'localhost' IDENTIFIED BY 'celulari';
CREATE USER 'eduardo'@'localhost' IDENTIFIED BY 'sabetudo';
CREATE USER 'fernando'@'localhost' IDENTIFIED BY 'bandeira';
CREATE USER 'gabriel'@'localhost' IDENTIFIED BY 'g1g2';
CREATE USER 'matheus'@'localhost' IDENTIFIED BY 'tubarao';
26
CREATE USER 'rodrigo'@'localhost' IDENTIFIED BY 'santinho';
Exemplos

CREATE ROLE ro_funcionario;


GRANT INSERT ON tabela_produto TO ro_funcionario;
GRANT SELECT ON tabela_cliente TO ro_funcionario;

CREATE ROLE ro_gerente;


GRANT EXECUTE ON procedure_calcula_total TO ro_gerente;

27
Exemplos

GRANT ro_candango TO ro_chefe;

GRANT ro_candango TO lucas@localhost;

GRANT ro_candango TO maicom@localhost;

GRANT ro_chefe TO amanda@localhost;

28
Exemplos

GRANT CREATE TABLE TO maicom@localhost;

GRANT INSERT ON categoria TO maicon@localhost;

GRANT SELECT ON categoria TO lucas@localhost;

REVOKE INSERT ON categoria FROM maicon@localhost;

FLUSH PRIVILEGES;
29
Fonte

MySQL 8.0 Manual de Referência (inglês):

https://dev.mysql.com/doc/refman/8.0/en/grant.html

30

Você também pode gostar