sábado, 18 de fevereiro de 2012

Qual a senha mesmo? – Identified by values

Muitas vezes precisamos conectar na base de dados com usuários específicos para serem realizadas atividades de manutenção, por exemplo. Ai vem o problema, “Qual a senha mesmo?”. 

A primeira coisa que precisamos saber é que não iremos descobrir a senha mas sim identificar a string criptografada para posteriormente voltar a senha como estava antes de ser alterada para nossa conexão. 

Vejamos o exemplo, Iremos criar o usuário anderson com a senha anderson1234

[oracle@orcl ~]$ sqlplus "/ as sysdba"
 
SQL*Plus: Release 10.2.0.5.0 - Production on Thu Sep 8 16:15:23 2011
 
Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.
 
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
 
SQL> create user anderson identified by anderson1234;
 
User created.

Vamos conceder ao usuário o privilégio para iniciar um sessão com o banco de dados:

SQL> grant create session to anderson;
 
Grant succeeded.

Maravilha, agora partimos da ideia proposta de que precisamos conectar com o usuário anderson e não sabemos a senha. Vamos identificar a senha criptografada do usuário:

SQL> select NAME, PASSWORD from sys.user$ where NAME = 'ANDERSON';
 
NAME                           PASSWORD
------------------------------ ------------------------------
ANDERSON                       F41842A6C0E16CE7

Na versão 10g podemos identificar o password (senha criptografada) também na visão dinâmica DBA_USERS porem na versão 11g** o password estará sendo apresentado em branco sendo necessário então utilizar a SYS.USER$ proposta acima. 

(**) A partir da versão 11g em função da possibilidade de ter senhas com case-sensitive habilitado (sec_case_sensitive_logon) a senha criptografava da coluna password deve ser concatenada junto a coluna spare4!

SQL> select name, password, SPARE4 from sys.user$ where name='ANDERSON';

NAME                           PASSWORD                       SPARE4
------------------------------ ------------------------------ ----------------------------------------------------------------------
ANDERSON                       F41842A6C0E16CE7               S:4AEF88CE0FE3B927DD6A4BJJ8E42008D9103DC193A9327AFC84889A275BE

Agora que já sabemos a senha criptografa deste usuário, vamos alterar a senha para podermos conectar:

SQL> alter user anderson identified by teste123;
 
User altered.

Conectando com o usuário anderson atraves da nova senha definida:

SQL> conn anderson/teste123
Connected.
SQL> show user
USER is "ANDERSON"

Agora que nossa conexão com o usuário foi estabelecida podemos voltar a senha antiga utilizando o IDENTIFIED BY VALUES:

10g:

SQL>  alter user anderson identified by values 'F41842A6C0E16CE7';
 
User altered.

11g:

SQL>  alter user anderson identified by values 'S:4AEF88CE0FE3B927DD6A4BJJ8E42008D9103DC193A9327AFC84889A275BE;F41842A6C0E16CE7';
 
User altered.

*NOTA: entre a senha criptografada do SPARE4 e a senha criptografada da coluna PASSWORD é necessário adicionar ponto e virgula ";" 

Vamos testar se a senha anterior está OK:

SQL> conn anderson/anderson1234
Connected.
SQL> show user
USER is "ANDERSON"

ATENÇÃO: Antes de sair alterando as senhas dos usuários visando voltá-las depois tome cuida pois você pode afetar o funcionamento de varias rotinas do seu sistema.
Postagem mais recente Postagem mais antiga Página inicial

0 comentários:

Postar um comentário

Translate

# ACE Program

#Oracle

#Oracle
Disclaimer: The views expressed on this blog are my own and do not necessarily reflect the views of Oracle.

#Blog reconhecido

#ARTICULISTA

Marcadores

Postagens populares