120 - Permiso de conexión


Problema:

Creamos un usuario denominado "ana", con contraseña "anita", le asignamos espacio en "system" (100M). Antes lo eliminamos por si existe:

 drop user ana cascade;

 create user ana identified by anita
 default tablespace system
 quota 100M on system;

Creamos un usuario denominado "juan", con contraseña "juancito", le asignamos espacio en "system" (100M). Antes lo eliminamos por si existe:

 drop user juan cascade;

 create user juan identified by juancito
 default tablespace system
 quota 100M on system;

Consultamos el diccionario "dba_users" y analizamos la información que nos muestra:

 select username, password, default_tablespace, created from dba_users;

Verificamos que los usuarios "ana" y "juan" existen.

Consultamos el diccionario "dba_sys_privs" para encontrar los privilegios concedidos a nuestros usuarios. Nos mostrará el nombre del usuario (grantee) y el permiso (si lo tiene):

select grantee, privilege from dba_sys_privs where GRANTEE='ANA' or grantee='JUAN';

Nos muestra que estos usuarios no tienen ningún privilegio concedido.

Concedemos a "juan" permiso para conectarse:

 grant create session
  to juan;

Consultamos el diccionario "dba_sys_privs" para encontrar los privilegios concedidos a "juan":

 select grantee,privilege from dba_sys_privs 
  where grantee='JUAN';

Tiene permiso "create session".

Abrimos una nueva conexión para "juan":

Presionamos el ícono "new connection" en la solapa "connections"; se abre una ventana en la cual colocamos:

- "connection name" (nombre de la conexión): juan;

- "username" (nombre del usuario): juan y

- "password" (contraseña): juancito.

Luego presionamos "connect"; se abre una nueva solapa (nueva conexión) con el nombre del usuario (juan).

En la conexión de "juan" podemos consultar sus privilegios:

 select username, privilege from user_sys_privs;

Note que únicamente aparecen los permisos del usuario actual.

Para obtener el nombre del usuario conectado, empleamos la siguiente sentencia:

 select user from dual;

Aparece Juan.

Volvemos a la conexión "system" (la otra solapa).

Comprobamos el usuario actual:

 select user from dual;

Aparece System.

Ya sabemos abrir una nueva sessión de usuario. Aprendimos que existen 3 razones por las cuales una nueva sesión no se pueda iniciar; una de ellas es que el usuario no exista. Intentemos abrir una nueva conexión para un usuario inexistente:

Presionamos el ícono "new connection" en la solapa "connections"; se abre una ventana en la cual colocamos:

- "connection name" (nombre de la conexión): pedro;

- "username" (nombre del usuario): pedro y

- "password" (contraseña): pedrito.

Luego presionamos "connect"; la sessión no se abre, un mensaje de error indica que el nombre de usuario o la contraseña son inválidas y que la conexión se deniega.

Cancelamos.

Otra razón por la cual la apertura de una nueva sesión puede fallar es que el usuario no tenga permiso de conexión. Intentemos abrir una nueva conexión para un usuario que no tenga tal permiso, caso de "ana":

Presionamos el ícono "new connection" en la solapa "connections"; se abre una ventana en la cual colocamos:

- "connection name" (nombre de la conexión): ana;

- "username" (nombre del usuario): ana y

- "password" (contraseña): anita.

Luego presionamos "connect"; la sessión no se abre, un mensaje de error indica que el usuario "ana" no tiene permiso "create session" por lo cual se deniega la conexión. Cancelamos.

Concedemos a "ana" permiso de conexión:

 grant create session
  to ana;

Consultamos el diccionario "dba_sys_privs" para encontrar los privilegios concedidos a "ana":

 select grantee,privilege from dba_sys_privs 
  where grantee='ANA';

Tiene permiso "create session".

La tercera razón por la cual puede no iniciarse una nueva sesión es que coloquemos la contraseña incorrecta. Intentemos abrir una nueva conexión para un usuario que tenga permiso, pero le demos una contraseña incorrecta:

Presionamos el ícono "new connection" en la solapa "connections"; se abre una ventana en la cual colocamos:

- "connection name" (nombre de la conexión): ana;

- "username" (nombre del usuario): ana y

- "password" (contraseña): ana.

Luego presionamos "connect"; la sessión no se abre, un mensaje de error indica que el nombre de usuario o la contraseña son inválidas y que la conexión se deniega.

Abramos una nueva conexión para "ana" colocando los datos correctos:

Presionamos el ícono "new connection" en la solapa "connections"; se abre una ventana en la cual colocamos:

- "connection name" (nombre de la conexión): ana;

- "username" (nombre del usuario): ana y

- "password" (contraseña): anita.

Presionamos "connect"; se abre una nueva solapa (nueva conexión) con el nombre del usuario (ana).

Consultamos el diccionario "user_sys_privs":

 select username,privilege from user_sys_privs;

Note que únicamente aparecen los permisos del usuario actual.

Comprobamos que estamos en la sesión de "ana":

 select user from dual;

Ingresemos el siguiente lote de comandos en el Oracle SQL Developer:

 drop user ana cascade;

 create user ana identified by anita
 default tablespace system
 quota 100M on system;

 -- Creamos un usuario denominado "juan", con contraseña "juancito",
 -- le asignamos espacio en "system" (100M). Antes lo eliminamos por si existe:
 drop user juan cascade;

 create user juan identified by juancito
 default tablespace system
 quota 100M on system;

 -- Consultamos el diccionario "dba_users" y analizamos la información que nos muestra:
 select username, password, default_tablespace, created from dba_users;

 -- Verificamos que los usuarios "ana" y "juan" existen.
select grantee, privilege from dba_sys_privs where GRANTEE='ANA' or grantee='JUAN';
 -- Nos muestra que estos usuarios no tienen ningún privilegio concedido.

 --Concedemos a "juan" permiso para conectarse:
 grant create session
  to juan;

 -- Consultamos el diccionario "dba_sys_privs" para encontrar los privilegios concedidos a "juan":
 select grantee,privilege from dba_sys_privs 
  where grantee='JUAN';
 --Tiene permiso "create session".

La ejecución de este lote de comandos SQL genera una salida similar a:

SQL Developer usuarios permisos de conexión

Abrimos una nueva conexión para "juan":

Presionamos el ícono "new connection" en la solapa "connections"; se abre una ventana en la cual colocamos:

SQL Developer usuarios permisos de conexión

Ingresemos el siguiente lote de comandos en la solapa del usuario "juan":

 -- En la conexión de "juan" podemos consultar sus privilegios:
 select username, privilege from user_sys_privs;
 -- Note que únicamente aparecen los permisos del usuario actual.

 -- Para obtener el nombre del usuario conectado, empleamos la siguiente sentencia:
 select user from dual;
 -- Aparece Juan.

La ejecución de este lote de comandos SQL genera una salida similar a:

SQL Developer usuario juan


Retornar