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];

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