Consulta de contraseñas de usuario de Oracle

Por obvias razones de seguridad no se puede consultar en claro la contraseña de los usuarios de la base de datos, pero un usuario administrador como SYSTEM sí que tiene privilegios para consultar el password encriptado:

SQL> select password from dba_users where username='SCOTT';
PASSWORD
-----------------------------
F894844C34402B67

La utilidad de esto está en que lo mismo que nos retorna la SELECT se puede utilizar en una sentencia de modificación de la contraseña;

SQL> alter user scott identified by values 'F894844C34402B67';

Con esto no hemos hecho nada, ya que le hemos asignado a SCOTT la misma contraseña que tenía (TIGER), pero si cambiamos la contraseña:

SQL> alter user scott identified by nuevacontraseña;
SQL> connect scott/nuevacontraseña
Connected.

Y ahora queremos volver a ponerle la contraseña inicial:

SQL> connect system/dbapwd
Connected.
SQL> alter user scott identified by values 'F894844C34402B67';
User altered.

SQL> connect scott/tiger
Connected.

Este ejemplo es sólo ilustrativo, pero este sistema puede ser realmente útil para recrear un usuario, o replicarlo en otro entorno con el mismo password que tenía. Si no recordamos cuál es su password, no lo tenemos almacenado, y no tenemos ganas de preguntar a nadie, podemos recuperar la contraseña encriptada, recrear el usuario con una contraseña cualquiera, y después modificarla con la encriptada que nos hemos guardado:

SQL> create user prueba identified by contraseña;
Usuario creado.

SQL> select password from dba_users where username='PRUEBA';
PASSWORD
------------------------------
808E242669FC5270

SQL> drop user prueba;
Usuario borrado.

SQL> create user prueba identified by loquequieras;
Usuario creado.

SQL> alter user prueba identified by values '808E242669FC5270';
Usuario modificado.

De esta manera hemos vuelto a crear el usuario prueba con la misma contraseña que tenía, y sin conocerla.

 

Justo lo que necesitaba

Muchisimas Gracias!!!
Justo lo que necesitaba para la migración de una base de datos de 9i a 10g sin tener que molestar a los usuarios.

Muchas gracias me salvaste de

Muchas gracias me salvaste de una, justo me habia recordado de ese problema y afortunadamente estaba aca.

Saludos y Gracias.

En ORACLE 11G R2 no salen el

En ORACLE 11G R2 no salen el hash de las passwords

¿Alguna otra forma?

Un saludo

Contenido relacionado

  • Si tienes el usuario de sistema con el que se ha instalado la base de datos puedes entrar en SQL plus como usuario DBA y sin introducir ninguna contraseña de la siguiente manera:

    1. Entra en el sistema con este usuario.
    2. Desde la linea de comandos, entra en SQLplus poniendo:

    sqlplus "/as sysdba"

    Si has necesitado entrar así porque no recordabas la contraseña de algún usuario, ya puedes modificarla/s para poder utilizarlo/s después:

    SQL> alter user nombre_usuario identified by nuevo_password;

    Te puede pasar que haya más de una BD instalada en el servidor, por lo que tendrás que asegurarte de que las variables de entorno del usuario de Oracle están apuntando a la base de datos que te interesa.

    Para comprobar que has entrado en la base de datos correcta antes de tocar nada puedes ejecutar esta sentencia:

    SQL> select name from v$database;

  • Tengo un usuario defindo en BD como un usuario GLOBAL. Este usuario hace refeencia a un usuario definido en un Oracle Internet Directory. Usuario: EXT-JVINGON.

    CREATE USER "EXT-JVINGON"
    IDENTIFIED GLOBALLY AS 'uid=ext-jvingon,cn=Users,dc=ejemplo,dc=dominio,dc=org'
    DEFAULT TABLESPACE USERS
    TEMPORARY TABLESPACE TEMP
    PROFILE DEFAULT
    ACCOUNT UNLOCK;
    -- 3 Roles for "EXT-JVINGON"
    GRANT CONNECT TO "EXT-JVINGON";

    Le doy permisos de lectura para que pueda acceder al objeto PRUEBA.TABLA1

    GRANT SELECT ON PRUEBA.TABLA1 TO "EXT-JVINGON";

    La cuestión que es intento acceder a la tabla PRUEBA.TABLA1 y no puedo... ¿Alguien sabe porque?

    C:\Users\Administrador>sqlplus ext-jvingon
    SQL*Plus: Release 11.1.0.7.0 - Production on Jue Abr 18 13:43:56 2013
    Copyright (c) 1982, 2008, Oracle. All rights reserved.
    Introduzca la contrase±a:

    Conectado a:
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options

    SQL> select * from PRUEBA.TABLA1;
    select * from PRUEBA.TABLA1
    *
    ERROR en lÝnea 1:
    ORA-00942: la tabla o vista no existe

    Saludos,

    Jorge

  • Si pasais a ocupar el puesto de administrador de Oracle y la persona saliente no os deja anotadas las contraseñas de los usuarios sys y system de la base de datos se puede proceder de la siguiente manera para intentar recuperarlas. Si tenemos el usuario root podemos cambiar la contraseña de sys y system de Oracle.

    Primero debemos conectarnos al servidor con el usuario en el que corre la base de datos o root y cambiar. A continuación cambiaremos la contraseña del usuario sys de Oracle:

  • Si eres DBA y no puedes gestionar tus instancias de SQL Server porque no puedes entrar con el usuario 'sa', y no tienes ningún otro usuario con rol SYSADMIN, en el post How to connect to SQL Server if you are completely locked out, de MSSQLTips, nos explican una manera de recuperar el acceso a SQL Server como SYSADMIN.

    Es algo parecido al método que explicaba il_masacratore para Recuperar la contraseña del usuario sys y system en Oracle, la clave está en entrar en la base de datos utilizando el usuario de sistema Administrador del servidor en el que está instalada.

    Al conectar en modo 'single user' con un administrador local del servidor, podremos disfrutar de los permisos de administración de SYSADMIN para recuperar todo lo que haga falta, o asignar los privilegios necesarios a cualquier usuario.

     

  • La instrucción grant se utiliza para conceder determinados permisos genéricos o bien permisos sobre objetos a usuarios de la base de datos.

    La sintaxis de la misma es la siguiente:

    GRANT [privilegios_de_sistema | roles]
    TO [usuarios | roles |PUBLIC] {WITH GRANT OPTION }

    para conceder permisos genéricos


    GRANT [ALL {PRIVILEGES} | SELECT | INSERT | UPDATE | DELETE] ON objeto
    TO [usuario | rol | PUBLIC] {WITH GRANT OPTION}

    para conceder permisos sobre objetos

    La sintaxis es muy sencilla, y los privilegios los puede conceder el usuario propietario de los objetos, o un usuario con privilegios de concesión de permisos sobre objetos que no son suyos (DBA's).

    Lo que quería comentar es la utilización de la opción de grant WITH GRANT OPTION, que permite que el usuario al que le han concedido permisos pueda a su vez concederlos a otros usuarios.

    Mostraré la utilizad de esta opción con un ejemplo:
    Imaginemos que tenemos un usuario 'U_VISTA', que crea una vista con una consulta que consulta información de un objeto de otro usuario 'U_DATOS'. Hasta aquí es sencillo, ya que con un GRANT del usuario 'U_DATOS' al usuario 'U_VISTA' sobre esos objetos el tema está solucionado.
    U_DATOS:

    SQL> GRANT SELECT ON TABLA TO U_VISTA;

 

 

 

Gestion del Conocimiento    |    Business Intelligence y Analítica    |     Bases de Datos    |      ERP     |      CRM      |     Tendencias tecnológicas