- SYS é o dono do banco de dados;
- SYSTEM é o admin;
- usuário schema: possui objetos no banco, possui privilégios para
criar objetos;
- usuário de aplicação: tem privilégios para acessar objetos, mas não
pode alterá-los;
- por padrão usuários não tem permissão para nada (nem para logar no
banco);
- privilégios não precisam de restart do sistema para funcionar;
- packages empacotam várias procedures dentro;
- DCL → data control language (GRANT e REVOKE);
- cada banco criar o DCL do seu jeito (não possui padrão ANSI);
- donos dos objetos podem fazer o que quiser com eles.
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;