Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Criar um novo usuário Oracle e conceder privilégios:sintaxe e exemplos


Neste artigo, falaremos sobre como criar um usuário no Oracle. Você aprenderá como adicionar novos usuários de banco de dados, descobrir quais aspectos suplementares esse trabalho envolve:desde a criação inicial do usuário até sua eliminação. Além disso, você encontrará algumas dicas úteis sobre como trabalhar com IDENTIFY e TABLESPACE cláusulas, bem como aprender como GRANT funções e permissões no Oracle.

Conteúdo
  • Como criar um novo usuário no Oracle
  • Exemplos de sintaxe Oracle CREATE USER
  • Como criar usuários padrão com configurações padrão
  • Criar usuário identificado por cláusulas
    • Criar usuário identificado por cláusula de senha
    • Cláusulas externas e globais
  • CRIAR USUÁRIO com Cláusula de Tablespace
    • Espaço de tabela padrão
    • Espaço de tabela temporário
    • Cota
  • Criar atributos de usuário
    • Perfil
    • Senha expirada
    • Bloqueio/Desbloqueio de conta
  • Conceder função ao usuário
  • Conceder permissão no Oracle
  • Sintaxe do comando GRANT
  • Privilégios do usuário Oracle
  • Como criar e conceder todos os privilégios ao usuário Oracle
  • Como conceder privilégio de tabela ao usuário no Oracle
  • Crie usuários Oracle e conceda permissões facilmente com o dbForge Studio para Oracle
  • Como excluir (descartar) usuário no Oracle
  • Conclusão

Como criar um novo usuário no Oracle


Antes de começarmos, você precisa verificar se tem o privilégio de sistema necessário para criar usuários. Caso contrário, certifique-se de atribuí-los à sua conta. Depois disso, você pode prosseguir para as tarefas práticas. Os exemplos neste artigo estão relacionados à versão 19c do usuário de criação do Oracle, mas os métodos são os mesmos para todas as versões do Oracle em uso (incluindo Oracle 10g, 11g, 12c etc.).

Exemplos de sintaxe Oracle CREATE USER


Para iniciantes, estaremos analisando o Oracle CREATE USER sintaxe. Primeiro, discutiremos como criar um com as configurações padrão. Depois disso, passaremos para as diferentes variações do IDENTIFIED cláusula, cláusula tablespace e outras peculiaridades do CREATE USER sintaxe no Oracle.

Como criar usuários padrão com configurações padrão


É sempre melhor começar com o básico. Assim, vamos nos concentrar no CREATE USER comando por si só. Como está, ele criará um usuário com atributos padrão. Mais adiante neste artigo, veremos como configurar os usuários com mais precisão e como isso aumenta a segurança do banco de dados em geral.

Criar usuário identificado por cláusulas


O IDENTIFIED A cláusula permite indicar como o banco de dados Oracle autentica um usuário. Vamos dar uma olhada em diferentes exemplos do IDENTIFIED sintaxe no Oracle.

Criar usuário identificado por cláusula de senha


No caso mais simples, estamos criando um novo usuário local com o nome de usuário. O usuário será solicitado a digitar a senha para fazer login no sistema:
CREATE USER <username> IDENTIFIED BY <password>;

O nome de usuário pode ser qualquer coisa. No entanto, a senha deve consistir em caracteres de byte único do conjunto de caracteres do banco de dados. Se o conjunto de caracteres também tiver caracteres multibyte, ele não alterará o requisito de senha – use apenas caracteres de byte único.
CREATE USER visitor
  IDENTIFIED BY psw4visits;

Cláusulas externas e globais


Além de identificar por senha, você pode utilizar um dos outros dois meios de autenticação de usuário. Estará configurando um usuário externo ou um usuário global. Para fazer isso, você precisa incluir o EXTERNALLY ou GLOBALLY cláusula no CREATE USER Comando Oráculo.

EXTERNALLY permite a criação de um usuário externo. Nesse caso, o usuário é autenticado por um sistema externo, como o sistema operacional. Por exemplo, um usuário do banco de dados Oracle é um usuário do Windows. Assim, eles podem acessar o banco de dados após serem autenticados pelo Windows sem inserir outras senhas. Trabalhar sob o usuário externo é uma opção padrão para usuários regulares de banco de dados. Mas esses usuários têm apenas funções padrão (CONNECT e RESOURCE), sem privilégios de administrador ou operador de banco de dados.

Para criar um usuário externo, executamos a instrução abaixo:
CREATE USER external_user1
  IDENTIFIED EXTERNALLY
  DEFAULT TABLESPACE tbs_new_10
  QUOTA 10M ON tbs_new_10
  PROFILE external_user_profile1;

Desta forma, criamos um novo usuário externo para nosso banco de dados. O nome é external_user1. Nenhuma senha adicional é necessária. Atribuímos a esse usuário o tablespace padrão tbs_new_10 com uma cota de 10 Mb. Outras limitações são definidas pelo external_user_profile1 aplicado a este usuário.

Como mencionamos anteriormente, diferentes sistemas externos podem manter e gerenciar usuários externos no banco de dados Oracle. Usar os recursos do sistema operacional é a opção mais comum. Assim, se quisermos criar um usuário de banco de dados externo acessível pela conta do sistema no sistema operacional, precisamos apenas modificar um pouco nossa instrução. Adicionaremos o prefixo ops$ ao nome de usuário:
CREATE USER ops$external_user1
  IDENTIFIED EXTERNALLY
  DEFAULT TABLESPACE tbs_new_10
  QUOTA 10M ON tbs_new_10
  PROFILE external_user_profile1;

GLOBALLY permite a criação de usuários globais. Isso significa que seus logins e senhas são armazenados no Central Oracle Security Server em vez do banco de dados específico. Além disso, as funções atribuídas a usuários globais nesse Servidor central se aplicam a esse usuário em qualquer banco de dados. Não será necessário configurar a função do usuário em um banco de dados separado. Observe que você precisa habilitar a opção de logon único para usuários globais.

Para criar um usuário de banco de dados global, usamos a seguinte instrução:
CREATE USER global_user1
  IDENTIFIED GLOBALLY AS 'CN=manager, OU=division, O=oracle, C=US'
  DEFAULT TABLESPACE USERS
  QUOTA 10M on USERS;

Agora temos um novo usuário de banco de dados global com o nome de global_user1 . Atribuímos USUÁRIOS tablespace padrão para esse usuário com uma cotação de 10M.

CRIAR USUÁRIO com Cláusula Tablespace


Agora, vamos revisar o script básico de criação de novo usuário do Oracle. Está abaixo:
CREATE USER username
    IDENTIFIED BY password
    DEFAULT TABLESPACE tablespace
    TEMPORARY TABLESPACE tbs_temp_01
    QUOTA {size | UNLIMITED} ON tablespace;

Como você vê, o script inclui várias cláusulas que devemos levar em consideração:

Espaço de tabela padrão


Esta cláusula especifica o tablespace padrão para objetos criados pelo usuário. Caso contrário, esses objetos são armazenados no tablespace padrão do banco de dados. Se não houver nenhum tablespace padrão especificado para esse banco de dados específico, os objetos entrarão no tablespace do sistema.

Restrição:não especifique o tablespace temporário gerenciado localmente (como undo tablespace ou tablespace temporário gerenciado por dicionário) como o tablespace padrão do usuário de criação do Oracle.

Espaço de tabela temporário


Esta cláusula especifica o grupo de tablespace/tablespace destinado a conter os segmentos temporários do usuário. Sem ele, os segmentos temporários desses usuários são armazenados no tablespace temporário padrão do banco de dados do tablespace do sistema. Quando você especifica o grupo de tablespace incluindo o valor tablespace_group_name no script, os segmentos temporários dos usuários podem ser salvos em qualquer tablespace desse grupo.

Observação :
Certifique-se de especificar o tablespace temporário com tamanho de bloco padrão. Não pode ser o tablespace de undo ou o tablespace com gerenciamento automático de espaço de segmento.

Cota


Esta cláusula especifica quanto espaço este usuário pode alocar no tablespace. Várias QUOTA cláusulas em um Oracle CREATE USER O comando pode estar presente se você precisar especificar vários espaços de tabela.
A cláusula pode incluir o UNLIMITED definição para permitir que esse usuário definido aloque o espaço de tabela o quanto for necessário, sem limites.

Restrição :a QUOTA cláusula não se aplica a tablespaces temporários.

Criar atributos de usuário


Existem opções adicionais e opcionais do Oracle CREATE USER atributos que você pode incluir na sintaxe. Dê uma olhada no exemplo a seguir:
CREATE USER username
    IDENTIFIED BY password
    [DEFAULT TABLESPACE tablespace]
    [QUOTA {size | UNLIMITED} ON tablespace]
    [PROFILE profile]
    [PASSWORD EXPIRE]
    [ACCOUNT {LOCK | UNLOCK}];

Vamos rever essas cláusulas opcionais.

Perfil


Essa cláusula opcional permite limitar os recursos do banco de dados para esse usuário específico de uma vez quando as limitações são definidas no perfil específico. Sem esta cláusula, um novo usuário vem automaticamente para o perfil padrão.

Expiração da senha


A cláusula é opcional, mas muitos administradores de banco de dados a definem para uma segurança mais eficaz. Se incluída, esta cláusula determinará a alteração forçada da senha por parte do usuário. Normalmente, isso acontece quando o usuário tenta fazer login no banco de dados pela primeira vez.

Bloqueio de conta/Desbloqueio de conta


Você pode usar uma dessas cláusulas. Com LOCK aplicado, o Oracle cria a conta de usuário, mas essa conta não terá acesso ao banco de dados. Se você aplicar o UNLOCK cláusula ou não especificar nenhuma dessas duas cláusulas, a conta poderá ser usada de uma só vez. O status desbloqueado é o padrão.

O CREATE USER instrução com esses parâmetros adicionais seria a seguinte:
CREATE USER visitor
    IDENTIFIED BY migzw23ter
    DEFAULT TABLESPACE tbs_new_10
    QUOTA 50M ON tbs_new_10
    TEMPORARY TABLESPACE tbs_temp_10
    QUOTA 5M ON system 
    PROFILE qualified_user
    PASSWORD EXPIRE;
ACCOUNT UNLOCK	

Aqui, a instrução cria um novo usuário do banco de dados Oracle chamado visitor , com a senha migzw23ter . Este usuário é atribuído ao espaço de tabela padrão tbs_new_10 com uma cota de 50Mb. Este usuário também tem permissão para usar o tablespace temporário tbs_temp_10 .

Conceder função ao usuário


O primeiro passo é a criação de um usuário. O próximo é definir os direitos do usuário. Um usuário recém-criado não tem permissão para fazer nada, nem mesmo para se conectar ao banco de dados.

Trabalhar com bancos de dados Oracle inevitavelmente inclui a tarefa de criar usuários de banco de dados. Existem as contas de usuário do sistema que o próprio Oracle cria – hr , OE , sistema , etc. Essas contas possuem configurações predefinidas com direitos e limitações. No entanto, o trabalho diário sempre exigirá outros usuários.

Um dos deveres do DBA é criar usuários de banco de dados adicionais. O trabalho inclui configurar as contas de usuário, definir privilégios e gerenciar usuários de acordo com as metas de negócios.

Conceder permissão no Oracle


Usando o GRANT comando, você pode fornecer aos usuários certos privilégios e configurar suas funções de acordo com suas necessidades. No Oracle, você pode conceder sua permissão a outras pessoas para que possam manipular e gerenciar os dados em seu banco de dados. GRANT é uma declaração muito poderosa com muitas opções possíveis, mas a funcionalidade principal é gerenciar os privilégios de usuários e funções em todo o banco de dados.

Sintaxe do comando GRANT


A sintaxe básica da consulta para conceder determinados privilégios ao usuário é a seguinte:
GRANT <permission> to <user>;

Privilégios do usuário Oracle


O GRANT O comando pode dar aos usuários privilégios para criar, alterar, descartar e gerenciar objetos de banco de dados. Por exemplo, os privilégios para criar tablespaces e excluir as linhas de qualquer tabela em um banco de dados são privilégios do sistema.

O Oracle possui mais de 100 privilégios de sistema que podem ser encontrados na tabela SYSTEM_PRIVILEGE_MAP.
CLUSTER CRIAR/CRIAR QUALQUER/ALTERAR QUALQUER/DERROTAR QUALQUER CLUSTER
BANCO DE DADOS ALTER BANCO DE DADOS, ALTER SISTEMA, SISTEMA DE AUDITORIA
ÍNDICE CRIAR QUALQUER/ALTERAR QUALQUER/RETIRAR QUALQUER ÍNDICE
PERFIL CRIAR/ALTERAR/SALTAR PERFIL
PAPEL CREATE/ALTER ANY/DROP ANY/GRANT ANY (permite REVOKE)
Segmento de reversão CRIAR/ALTER/DROP ROLLBACK SEGMENT
USUÁRIO CRIAR/ALTER/BECOME/DROP USER
VER CRIAR/CRIAR QUALQUER/SAIR DE QUALQUER VISUALIZAÇÃO
SINÔNIMO CRIAR/CRIAR QUALQUER/CRIAR PÚBLICO/SAIR DE QUALQUER/SINÔNIMO PÚBLICO
SESSÃO CRIAR/ALTER/SESSÃO RESTRITA, ALTERAR CUSTO DO RECURSO
TABELA CRIAR/CRIAR QUALQUER/ALTER QUALQUER/DROP QUALQUER/SELECIONAR QUALQUER/INSERIR QUALQUER/ATUALIZAR QUALQUER/EXCLUIR QUALQUER/BLOQUEAR QUALQUER TABELA
TABLESPACE CRIAR/ALTER/DROP/GERENCIAR TABLESPACE

Normalmente, o administrador de um banco de dados concede os privilégios aos usuários. No entanto, há casos em que o administrador precisa transferir seus privilégios de usuário Oracle. É aí que entram os privilégios de DBA. Se um DBA precisar fornecer privilégios de sistema para outra pessoa, isso deve ser feito com a opção admin:
GRANT create session TO user;
GRANT create session TO user with admin option;
Revoke create session from user;

Além dos privilégios do sistema Oracle, privilégios de objeto são concedidos aos objetos do banco de dados:tabelas, visualizações, procedimentos e assim por diante.

Como criar e conceder todos os privilégios ao usuário Oracle


Primeiro, precisamos conceder aos nossos usuários o privilégio de sistema para fazer login no banco de dados. Usamos a seguinte declaração para isso:
GRANT CREATE SESSION to visitor;

Há muitas permissões que o administrador do banco de dados pode fornecer ao usuário. Mas é essencial manter o conceito principal de segurança, que é dar aos usuários o mínimo de privilégios necessários para fazer o trabalho com eficiência. É por isso que não é recomendado fornecer todos os privilégios ao usuário.

Você pode aplicar outros privilégios um por um, cada um por uma instrução separada. Ou, é possível combinar essas permissões em uma, conforme mostrado abaixo:
GRANT CREATE VIEW, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TRIGGER to visitor;

Se este usuário definido tiver permissão para alterar tabelas, procedimentos, gatilhos, etc., a sintaxe para definir o privilégio necessário para cada caso está abaixo. Novamente, tenha muito cuidado ao permitir que o usuário altere quaisquer elementos, pois essa permissão é global.
GRANT ALTER ANY TABLE to visitor;
GRANT ALTER ANY PROCEDURE to visitor;
GRANT ALTER ANY TRIGGER to visitor;

Para permitir que o usuário exclua elementos, usamos as instruções abaixo:
GRANT DELETE ANY TABLE to visitor;
GRANT DROP ANY PROCEDURE to visitor;
GRANT DROP ANY TRIGGER to visitor;
GRANT DROP ANY VIEW to visitor;

Como conceder privilégio de tabela ao usuário no Oracle


Antes de definir os privilégios para um usuário específico, você deve considerar quais tarefas essa pessoa deve executar no banco de dados. Os cenários mais comuns incluem a criação de tabelas, visualizações, procedimentos, gatilhos. Alguns casos exigem a possibilidade de alterar ou excluir esses elementos. Dependendo da situação, o administrador define quais privilégios de sistema fornecer.

Vamos dar uma olhada em como conceder CREATE TABLE privilégio para um usuário no Oracle. Se estivermos dispostos a permitir que nosso usuário - visitante – para criar tabelas no banco de dados, usaremos a seguinte consulta:
GRANT CREATE TABLE to visitor;

Crie usuários Oracle e conceda permissões facilmente com o dbForge Studio para Oracle


Se você trabalha com bancos de dados Oracle diariamente e procura um IDE poderoso e prático e completo, sua pesquisa termina aqui. O dbForge Studio for Oracle ajuda os desenvolvedores a acelerar a codificação PL/SQL, fornece ferramentas versáteis de edição de dados para gerenciar dados externos e no banco de dados.

Neste artigo, estaremos criando um usuário Oracle e concedendo privilégios de DBA usando este script multifuncional:
DECLARE
 schema_name VARCHAR2(255):='username1'; -- Insert your username instead of 'username1'
 row_count NUMBER;
BEGIN
 FOR r IN (SELECT sid,serial# FROM v$session WHERE username = schema_name)
 LOOP
   EXECUTE IMMEDIATE 'ALTER SYSTEM DISCONNECT SESSION ''' || r.sid || ',' || r.serial# || ''''||' IMMEDIATE';
   EXECUTE IMMEDIATE 'ALTER SYSTEM KILL SESSION ''' || r.sid || ',' || r.serial# || '''';
 END LOOP;

 SELECT count(*) INTO row_count FROM dba_users WHERE username = schema_name;
 IF row_count > 0 THEN
   EXECUTE IMMEDIATE 'DROP USER '||schema_name||' CASCADE';
 END IF;
 EXECUTE IMMEDIATE 'CREATE USER '||schema_name||' IDENTIFIED BY ' || schema_name;
 EXECUTE IMMEDIATE 'GRANT dba TO '|| schema_name;
 EXECUTE IMMEDIATE 'ALTER SESSION SET CURRENT_SCHEMA = '||schema_name;
END;
/ 

O que estamos fazendo no script fornecido é:
  • criando um novo usuário
  • concedendo privilégios de DBA ao usuário recém-criado
  • definindo o usuário recém-criado como padrão para a sessão atual

No Oracle, usuários e esquemas são essencialmente a mesma coisa. Você pode considerar que um usuário é uma conta para se conectar a um banco de dados e um esquema é o conjunto de objetos que pertencem a essa conta. O esquema recém-criado está vazio e, portanto, não será exibido no Database Explorer .

Vamos criar um departamentos tabela para fazer o novo usuário aparecer na lista. Para fazer isso, sinta-se à vontade para usar o seguinte script:
CREATE TABLE departments (
  department_id NUMBER CONSTRAINT PK_DepID PRIMARY KEY,
  department_name varchar2(255) NOT NULL,
  location_id NUMBER  NOT NULL);

Tenha em mente que você não precisa abrir um documento SQL diferente para esta operação. O dbForge Studio for Oracle permite que você execute o código apenas parcialmente. Basta selecionar o CREATE TABLE cláusula, clique com o botão direito do mouse e escolha Executar seleção .

Se você tiver o AutoComit recurso LIGADO, o passo anterior será o último. No entanto, se estiver desativado, você precisará confirmar as alterações. Então, ao atualizar o Database Explorer, você verá username1 na lista.

Há casos em que sessões antigas permanecem em execução no servidor. Eles podem interferir na execução de novos comandos. No código acima, todas as sessões antigas são localizadas e removidas automaticamente do servidor. Se você precisar reiniciar sua sessão atual, poderá desconectá-la ou eliminá-la usando uma destas consultas:
  • ALTER SYSTEM DISCONNECT SESSION
  • ALTER SYSTEM KILL SESSION

Como excluir (descartar) usuário no Oracle


Caso você precise remover algum usuário por qualquer motivo, você deve usar o DROP USER comando com a seguinte sintaxe:
DROP USER <username>;

Em nosso caso de teste, estamos removendo o usuário visitante criado anteriormente:
DROP USER visitor;

No entanto, existem várias restrições às quais você precisa prestar atenção antes de descartar o usuário:
  • Você não pode remover usuários sem excluir todos os objetos relacionados. Assim, você deve eliminar todas as tabelas, visualizações, procedimentos, etc. que este usuário criou antes de prosseguir para o comando DROP.
  • Você não pode remover usuários conectados ao banco de dados. Primeiro, você precisa limpar todas as sessões que o usuário teve. Depois disso, você pode descartar o próprio usuário.

Existe um comando especial que permite descartar o usuário com todos os seus objetos de banco de dados de uma só vez:
DROP USER <username> CASCADE;

Conclusão


Resumindo, agora você pode usar o Oracle SQL CREATE USER comando para adicionar novos usuários, configurá-los e gerenciá-los. Usamos os exemplos para o desempenho manual. No entanto, os recursos das soluções de software modernas para bancos de dados Oracle podem simplificar esse trabalho, torná-lo mais rápido e preciso. Sinta-se à vontade para experimentar o dbForge Studio com um arquivo .

Links úteis
  • Configurando uma nova conta de usuário no Oracle
  • Ferramentas de administração de banco de dados Oracle
  • Criar um banco de dados no Oracle
  • Tabela de renomeação do Oracle
  • Tabela de alteração do Oracle