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.