AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 275148
Accepted
r0tt
r0tt
Asked: 2020-09-09 04:52:29 +0800 CST2020-09-09 04:52:29 +0800 CST 2020-09-09 04:52:29 +0800 CST

Quais privilégios preciso para alterar a senha de sys em um banco de dados Oracle?

  • 772

Nossa ferramenta de gerenciamento de identidade deseja alterar a senha do sistema regularmente. Ele falha com o ORA-01031. Quais privilégios ou funções preciso conceder ao usuário da ferramenta de gerenciamento de identidade para poder alterar a senha do sistema?

oracle password
  • 4 4 respostas
  • 2370 Views

4 respostas

  • Voted
  1. Best Answer
    Connor McDonald
    2020-09-09T15:49:23+08:002020-09-09T15:49:23+08:00

    Você precisará estar conectado como um usuário com o privilégio SYSDBA. Mesmo "alterar qualquer usuário" não será suficiente.

    SQL> select *
      2  from   session_privs
      3  where  privilege like 'ALTER ANY%';
    
    PRIVILEGE
    ----------------------------------------
    ALTER ANY TABLE
    ALTER ANY CLUSTER
    ALTER ANY INDEX
    ALTER ANY SEQUENCE
    ALTER ANY ROLE
    ALTER ANY PROCEDURE
    ALTER ANY TRIGGER
    ALTER ANY MATERIALIZED VIEW
    ALTER ANY TYPE
    ALTER ANY LIBRARY
    ALTER ANY OPERATOR
    ALTER ANY INDEXTYPE
    ALTER ANY DIMENSION
    ALTER ANY OUTLINE
    ALTER ANY EVALUATION CONTEXT
    ALTER ANY RULE SET
    ALTER ANY RULE
    ALTER ANY SQL PROFILE
    ALTER ANY EDITION
    ALTER ANY ASSEMBLY
    ALTER ANY MINING MODEL
    ALTER ANY CUBE DIMENSION
    ALTER ANY CUBE
    ALTER ANY SQL TRANSLATION PROFILE
    ALTER ANY MEASURE FOLDER
    ALTER ANY CUBE BUILD PROCESS
    ALTER ANY ATTRIBUTE DIMENSION
    ALTER ANY HIERARCHY
    ALTER ANY ANALYTIC VIEW
    
    29 rows selected.
    
    SQL> alter user sys identified by newpass;
    alter user sys identified by newpass
    *
    ERROR at line 1:
    ORA-01031: insufficient privileges
    
    • 2
  2. Phill W.
    2020-09-10T02:36:04+08:002020-09-10T02:36:04+08:00

    Nossa ferramenta de gerenciamento de identidade deseja alterar a senha do sistema regularmente ...

    Eu sugeriria que isso é imprudente.

    A senha SYS pode ser usada por mais do que apenas o Oracle Database.

    O DataGuard Broker e o Enterprise Manager são dois que vêm à mente. O último terá a senha do SYS armazenada em algum momento (dada a tendência do OEM de "lembrar" as coisas para você, isso é quase inevitável ), portanto, alterar regularmente a(s) senha(s) do SYS provavelmente causará problemas.

    Também pareço lembrar que os OEM Agents também podem usá-lo (para Failover Automatizado?)

    E estou assumindo aqui que você quer dizer as senhas do SYS, plural , porque, é claro, toda instalação do Oracle deve ter suas próprias credenciais, separadas de todas as outras instalações, e você deve ter pelo menos duas instalações (Test e Live)!

    • 1
  3. miracle173
    2020-09-10T23:51:37+08:002020-09-10T23:51:37+08:00

    Estou usando o Oracle 11.2:

    SQL>select banner
      2  from v$version
      3  /
    
    BANNER
    --------------------------------------------------------------------------------
    Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
    PL/SQL Release 11.2.0.4.0 - Production
    CORE    11.2.0.4.0  Production
    TNS for Solaris: Version 11.2.0.4.0 - Production
    NLSRTL Version 11.2.0.4.0 - Production
    

    Para modificar a senha de um usuário é necessário o privilégio 'ALTER USER'.

    SQL>connect / as sysdba
    Connected.
    SQL>create user myuser identified by myuser;
    
    User created.
    
    SQL>grant create session to myuser;
    
    Grant succeeded.
    
    SQL>grant alter user to myuser;
    
    Grant succeeded.
    
    SQL>connect myuser/myuser
    Connected.
    SQL>alter user sys identified by HalloWorld;
    
    User altered.
    
    SQL>
    

    Portanto, ALTER USER é um privilégio muito perigoso. Um usuário pode alterar a senha do SYS, fazer login como SYS e pode modificar/ler/excluir o banco de dados. Então você deve fazer o seguinte

    1. crie um esquema, por exemplo, SECURE, e conceda ALTER USER a este esquema
    2. crie um procedimento, por exemplo, PROCEDURE CHANGE_SYSPW(new_syspw), neste esquema que modifica a senha do SYS
    3. conceder EXECUTE CHANGE_SYSPW ao usuário que deve ser capaz de alterar a senha do SYS

    aqui está um exemplo

    SQL>connect / as sysdba
    Connected.
    SQL>create user secure identified by secure;
    
    User created.
    
    SQL>grant create procedure to secure;
    
    Grant succeeded.
    
    SQL>grant alter user to secure;
    
    Grant succeeded.
    
    SQL>create or replace procedure secure.change_syspw(new_syspw varchar2)
      2  as
      3  begin
      4  EXECUTE IMMEDIATE 'alter user sys identified by "'||new_syspw||'"';
      5  end;
      6  /
    
    Procedure created.
    
    SQL>create user myuser identified by myuser;
    
    User created.
    
    SQL>grant create session to myuser;
    
    Grant succeeded.
    
    SQL>grant execute on secure.change_syspw to myuser;
    
    Grant succeeded.
    
    SQL>connect myuser/myuser
    Connected.
    SQL>exec secure.change_syspw('HalloWorld')
    
    PL/SQL procedure successfully completed.
    
    SQL>
    
    • 1
  4. Balazs Papp
    2020-09-11T04:20:30+08:002020-09-11T04:20:30+08:00

    Esta é uma mudança de comportamento documentada em 12.2:

    RDBMS 12.2 - Usuários que recebem o privilégio de sistema ALTER USER não podem alterar a senha do SYS (Doc ID 2263715.1)

    SINTOMAS

    Um usuário que recebe o privilégio de sistema ALTER USER não pode alterar a senha SYS a partir do Oracle RDBMS 12.2.0.1. Isso era possível nas versões anteriores.

    CAUSA

    Este é o comportamento esperado.

    SOLUÇÃO

    A partir do Oracle RDBMS 12.2, um usuário com privilégio ALTER USER não poderá mais alterar nenhum dos atributos (senha, perfil, cota, etc.) do usuário SYS.

    Há também uma solução alternativa para resolver esse problema. Podemos criar um procedimento no esquema sys que inclua o comando alter user para alterar a senha do sys e conceder execução neste procedimento ao usuário do sistema.

    • 1

relate perguntas

  • Backups de banco de dados no Oracle - Exportar o banco de dados ou usar outras ferramentas?

  • ORDER BY usando prioridades personalizadas para colunas de texto

  • Interface sqlplus confortável? [fechado]

  • Como encontrar as instruções SQL mais recentes no banco de dados?

  • Como posso consultar nomes usando expressões regulares?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve