terça-feira, 1 de maio de 2012

Oracle - Grants

Para criar um novo usuário (isto é executado pelo DBA) devemos proceder da seguinte forma, "Novinho" é o nome do usuário e IDENTIFIED BY "SenhaDoNovinho" é sua senha.

CREATE USER Novinho
IDENTIFIED BY  SenhaDoNovinho ;

User created.

Agora após termos criado um novo usuário vamos dar-lhe os seus GRANTS ou seja as permissões devidas
como,delete,update e etc, veja como se processa isto e veja também a sintaxe:

GRANT CREATE TABLE, CREATE SEQUENCE, CREATE VIEW
TO  Novinho;

Grant succeeded.

Criando uma ROLE de privilégios para ser usada para vários usuários, uma ROLE é o conjunto de privilégios que guardamos armazenados com a finalidade de proporcionar uma facilitação de manuseio na hora de se conceder privilégios, evitando a digitação de todos os privilégios, passando a ter que digitar somente o nome da ROLE. No exemplo, o nome da ROLE é "manager" e por enquanto não existe nenhum privilégio dentro dela.

CREATE ROLE manager;

Role created.

Agora estamos definindo os privilégios para a ROLE "manager", que são: criar tabela e visão. Observe como se processa isto:

GRANT CREATE TABLE, CREATE VIEW
TO manager;

Grant succeeded.

Agora que nossa ROLE já tem os privilégios definidos, no exemplo abaixo vou passá-la para algum usuário. No caso o usuário "Novinho" está recebendo os GRANTS da ROLE "manager", que são somente criar tabela e visão:

GRANT manager TO Novinho;

Grant succeeded

Como mudar a senha de um usuário: no caso estamos mudando do USER Novinho que tinha como "senha" ou seja IDENTIFIED igual a  "SenhaDoNovinho" passando a ser "NovaSenha".

ALTER USER Novinho IDENTIFIED BY NovaSenha;

User altered.

Agora estamos dando um novo GRANT para o USER "Novinho" referente a tabela EMPREGADO, neste caso o GRANT é só de consulta.

GRANT select
ON empregado
TO Novinho;

Grant succeeded.

O exemplo abaixo mostra como adicionar um novo GRANT a uma ROLE, relacionado com colunas específicas de uma tabela no caso s_dept e atribuindo a permissão de update para o usuário "NOVO" e para a ROLE "manager".

GRANT update(nome, regiao_id)
ON departamento
TO Novinho, manager;

Grant succeeded.

Este exemplo mostra como dar GRANT para um USER em uma tabela e este usuário ter permissão de passar este mesmo GRANT para outros usuários.

GRANT select
ON empregado
TO marcos
WITH GRANT OPTION;

Grant succeeded.

Agora estou tornando publico de todos o SELECT a tabela DEPARTAMENTO referente ao usuário BD_PRODUCAO, ou seja todos podem dar select a tabela DEPARTAMENTO do usuário BD_PRODUCAO.

GRANT select
ON bd_producao.departamento
TO PUBLIC;

Grant succeeded.

Para sabermos quais privilégios nós possuímos podemos acessar no DICIONÁRIO DE DADOS nas seguintes tabelas:

ROLE_SYS_PRIVS
ROLE_TAB_PRIVS
USER_ROLE_PRIVS
USER_TAB_PRIVS_MADE
USER_TAB_PRIVS_RECD
USER_COL_PRIVS_MADE
USER_COL_PRIVS_RECD

Como ver as ROLES que eu tenho acesso:

SELECT GRANTED_ROLE,OS_GRANTED
FROM USER_ROLE_PRIVS
WHERE USERNAME = ' bd_producao ';

GRANTED_ROLE                OS_
------------------------------ ---
CONNECT                           NO
DBA                                      NO
MANAGER                           NO

Para tirar os privilégios de um USER procede-se da seguinte forma:

REVOKE select
ON empregado
FROM Novinho;

Revoke succeeded.

No exemplo acima estamos tirando os privilégios de SELECT do USER “Novinho”.

Como criar sinônimo:
Criando um sinônimo para uma tabela: no caso está sendo criado um sinônimo com o nome "Setor" para a tabela DEPARTAMENTO pertencente a BD_PRODUCAO:

CREATE SYNONYM Setor
FOR bd_producao.departamento;

Synonym created.

Agora estamos criando um sinônimo para uma VIEW, nossa VIEW se chama dep_vw e o nome do sinônimo criado é d_sum:

CREATE SYNONYM outro_nome
FOR dep_vw;

Synonym created.

Agora estamos criando um sinônimo publico, o nome dele é "DDD" e é referente a tabela s_dept de alice:

CREATE PUBLIC SYNONYM outro_nome
FOR  bd_producao.departamento;

Synonym created.

Para dropar um sinônimo é simples:

DROP SYNONYM outro_nome;

Synonym dropped.

Nenhum comentário:

Postar um comentário