Criando usuários e liberando privilégios e atribuiçőes no Oracle
Veja neste artigo como criar usuários e liberar privilégios no banco de dados Oracle. Serão apresentados e explicados os dois tipos de privilégios do Oracle, privilégios de sistema e de objetos.
Sintaxe de Criaçăo de Usuário
Para que se crie um usuário no Oracle usamos a instruçăo CREATE USER, para isso temos abaixo a sintaxe dessa instruçăo de forma simplificada.
Listagem 1: Sintaxe dos comandos para criaçăo de usuários
CREATE USER nome_de_usuario IDENTIFIED BY sua_senha
[DEFAULT TABLESPACE nome_da_tablespace]
[TEMPORARY TABLESPACE tablespace_temporaria];
- nome_de_usuario – É nome do usuário que será criado;
- sua_senha – É a senha para o usuário que está sendo criado;
- nome_da_tablespace – É a tablespace padrăo onde os objetos do banco de dados săo armazenados. Se essa opçăo for omitida, o banco assume a tablespace SYSTEM padrăo;
- tablespace_temporaria – É a tablespace padrăo onde săo armazenados os objetos temporários, como tabelas temporárias por exemplo. Se essa opçăo for omitida um tablaspace temporário TEMP é assumida.
Criando um usuário
Listagem 2: Criando o usuário direto
CREATE USER eliezio identified by 123;
Na lista Listagem 2 foi criado o usuário ELIEZIO com a senha 123, esse usuário foi criado de forma direta, ou seja, foi omitida a DEFAULT TABLESPACE e TEMPORARY TABLESPACE, isso faz com que o Oracle assuma o padrăo do banco. Nesse caso assume de forma as tablespace SYSTEM e TEMP. Para checar as tablespaces usadas na criaçăo do usuário, pode ser executada o select aplicado na Listagem 3.
Listagem 3: Verificando as teblespaces
SELECT
username,
default_tablespace,
temporary_tablespace
FROM
dba_users
WHERE
username = 'ELIEZIO';
A Figura 1 exibe o resultado do select executado na lista 2.
Figura 1: Verificaçăo das tablespaces do usuário
Listagem 4: Criando o usuário passando de forma explicita as tablespace
CREATE USER devmedia identified by teste
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;
Na Listagem 4 foi criado o usuário DEVMEDIA com a senha teste, essa usuário foi criado passando as tablespaces de forma explicita, tanto para DEFAULT TABLESPACE como para TEMPORARY TABLESPACE.
Listagem 5: Verificando as tablespaces do usuário DEVMEDIA
SELECT
username,
default_tablespace,
temporary_tablespace
FROM
dba_users
WHERE
username = 'DEVEDIA';
A figura 2 exibe o resultado do select executado na lista 4.
Figura 2: Tablespaces do usuário DEVMEDIA
Listagem 6: Verificando as tablespace dos dois usuários
SELECT
username,
default_tablespace,
temporary_tablespace
FROM
dba_users
WHERE
username IN('DEVMEDIA','ELIEZIO');
A figura 3 exibe o resultado do select executado na listagem 6.
Figura 3: Tablespaces dos dois usuários
Alterando a senha, bloqueando/desbloqueando e excluindo usuários
Em algumas situaçőes é necessária a alteraçăo da senha do usuário e para isso usamos a instruçăo ALTER USER.
Listagem 7: Alterando a senha do usuário
ALTER USER devmedia identified by 4321;
Na listagem 7 a senha do usuário DEVMEDIA foi alterada de teste para 4321.
Listagem 8: Desbloqueando um usuário
ALTER USER devmedia identified by 4321 account unlock;
Na listagem 8 foram adicionados dois novos comandos, o ACCOUNT UNLOCK que tem a funçăo de desbloquear o usuário, nesse caso năo é necessário á troca da senha, a menos que seja necessário.
Listagem 9: Bloqueando um usuário
ALTER USER devmedia account lock;
Na listagem 9 foram usados os comandos, o ACCOUNT LOCK que tem a funçăo de bloquear o usuário, nesse caso năo o bloqueio năo foi feito pelo oracle e sim feita por um outro usuário do banco.
Por padrăo o Oracle bloqueia a o usuário sempre que a senha é errada dez vezes, para que se possa acessar novamente o banco com esse usuário é necessário o desbloqueio. Quando, o usuário tem seu acesso bloqueado o Oracle apresenta o erro ORA-28000. Veja Figura 4.
Figura 4: Erro de usuário bloqueado
Listagem 10: Excluindo um usuário
DROP USER eliezio;
Na listagem 10 foi usado o comando DROP USER para remover o usuário ELIEZIO.
Privilégios de Sistema
Como foi mencionado já anteriormente neste artigo, săo os privilégios que permitem executar instruçőes DDL, tais como create session,create sequence, create synonym,create table,create view dentre vários outros.
Listagem 11: Liberando Privilégios de Sistema
GRANT create session,create table,create view TO eliezio;
Na listagem 11 estăo sendo liberados tręs privilégios de sistema para o usuário ELIEZIO, nesse momento esse usuário passa a ter privilégio de criar uma sessăo de conexăo no banco, e ainda pode criar tabelas e views(visőes) no banco Oracle. Sempre que for liberar privilégios temos a opçăo e usar uma cláusula WITH ADMIN OPTION, isso permite que o usuário possa estender seus privilégios para outros usuários.
Listagem 12: WITH ADMIN OPTION
GRANT create session,create table,create view TO eliezio WITH ADMIN OPTION;
Na listagem 12 estăo sendo liberados tręs privilégios de sistema para o usuário ELIEZIO, como foi adicionada a cláusula WITH ADMIN OPTION significa que o usuário ELIEZIO pode estender seus privilégios de sistema para outros usuários.
Privilégios de Objeto
Como foi mencionado já anteriormente neste artigo, săo os privilégios que permitem executar instruçőes DML, tais como select, insert, update, delete dentre vários outros.
Listagem 13: Liberando Privilégios de Objeto
GRANT select,update ON HR.employees TO eliezio;
Na listagem 13 estăo sendo liberados privilégios de SELECT e UPDATE na tabela EMPLOYEES que é do esquema HR para o usuário ELIEZIO. Vale ressaltar que sempre que se está liberando privilégios a objetos de outro usuário deve-se sempre colocar o nome do usuário(esquema) antes do nome do objeto, como foi mostrando no exemplo da lista 12 HR.employees.
Listagem 14: WITH GRANT OPTION
GRANT select,update ON HR.employees TO eliezio WITH GRANT OPTION;
Na listagem 14 estăo sendo liberados privilégios de SELECT e UPDATE na tabela EMPLOYEES que é do esquema HR para o usuário ELIEZIO, no final foi adicionada a cláusula WITH GRANT OPTION, significando que o usuário ELIEZIO pode estender seus privilégios de objetos para outros usuários.
Listagem 15: Revogando(Removendo) de Sistema
REVOKE create view FROM eliezio;
Na listagem 15 é apresentada a cláusula REVOKE que é responsável por remover um privilégio de um usuário, seja ela um privilégio de sistema ou objeto. Nesse caso está sendo removido o privilégio CREATE VIEW do usuário ELIEZIO que é um privilégio de sistema.
Listagem 16: Revogando(Removendo) de Objetos
REVOKE insert ON HR.employees FROM eliezio;
Na listagem 16 é apresentada a cláusula REVOKE que é responsável por remover um privilégio de um usuário, seja ela um privilégio de sistema ou objeto. Nessa caso está sendo removido o privilégio INSERT do usuário ELIEZIO que é um privilégio de obejto
Obrigado e até o próximo artigo.
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo