Ciências da computação dia 160

Banco de dados --- Oracle permissões e usuários

Usuários

CREATE TEMPORARY TABLESPACE tmp_tablespace_name;

--criar usuário schema
CREATE USER name
  IDENTIFIED BY password
  DEFAULT TABLESPACE tablespace_name
  TEMPORARY TABLESPACE tmp_tablespace_name;

--RESOURCE deixa o user criar coisas (devs usam esse)
--CONNECT dá permissões para logar no bacno
GRANT CONNECT, RESOURCE TO name;

--altera o limite para o usuário no tablespace
ALTER USER name QUOTA UNLIMITED ON tablespace_name;

--para usar outro tablespace ao inves do default
CREATE TABLE table_name (
    coluna1 datatype,
    coluna2 datatype,
    coluna3 datatype,
) USING INDEX TABLESPACE tablespace_name;

--para setar um tablespace para o index
CREATE INDEX index_name on table_name ( coluna1, coluna2, coluna3 ) 
TABLESPACE tablespace_name;

--cria um usário de aplicação
CREATE USER name 
  IDENTIFIED BY password;

Privilégios

--TIPOS DE PRIVILÉGIO

--privilégio de sistema
GRANT privilegio1, privilegio2,... TO user1, user2,...;

--alguns privilégios
CREATE SESSION; --para conectar no banco
CREATE TABLE; --para criar tabela e indices
CREATE SEQUENCE;
CREATE VIEW;
CREATE PROCEDURE;

--privilégio de objetos
GRANT privilegio1, privilegio2, ... | ALL [colunas...]
  ON objeto
  TO user1, user2, ... | role | PUBLIC
  [WITH GRANT OPTION]; --permite o usuario dar privilégios para outros usuários nesse objeto

--alguns privilégios
INSERT, UPDATE, SELECT, DELETE --para tabelas
EXECUTE --para procedures

--obs: um unico grant não pode misturar privilégio de objeto e de sistema junto
--ROLES
--grupo de permissões

--do sistema
CONNECT, 
RESOURCE,
DBA --para admin

--para criar uma role
CREATE ROLE role_name;
GRANT privilegio1, privilegio2,... TO role_name;
--REVOKE
--remove privilegios

REVOKE privilegio1, privilegio2,...
ON objeto
FROM user1, user2,... | role | PUBLIC
[CASCADE CONSTRAINT]; --quando existem tables interligadas com privilégios

--SYNONYM
--maneira de criar um alias para um objeto

CREATE SYNONYM synonym_name FOR object;
SELECT * FROM synonym_name;