Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-04-2009
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 293
Poder: 18
GustavoCruz Va por buen camino
Inconvenientes con los Roles

Hola amigos foreros,

Hoy tengo unos inconvenientes con los roles...
Esto es lo que estoy haciendo:
  1. A los roles creados (administrador, digitador, pagador) le doy estos permisos:
    Código SQL [-]
    grant select, delete, insert, update on sltable to administrador, digitador, pagador
  2. Luego le asigno a un usuario el rol adecuado, de este modo:
    Código SQL [-]
    grant administrador to gustavo with admin option
    ;
el problema es que cuando hago una consulta a la tabla 'sltable'; me muestra el mensaje que dice que el usuario no tiene los privilegios para tal acción...

Me gustaría saber qué estoy haciendo mal .

De antemano muchas gracias por sus aportes.

Gustavo Cruz
Responder Con Cita
  #2  
Antiguo 18-04-2009
Gallosuarez Gallosuarez is offline
Miembro
 
Registrado: feb 2007
Posts: 92
Poder: 18
Gallosuarez Va por buen camino
Talking Permisos...

Gustavo:

Primero, asegúrate que existan los roles:

Código SQL [-]
select *
from rdb$roles

Despues, asegúrate que se han otorgado los permisos a los usuarios y a los roles:

Código SQL [-]
select *
from rdb$user_privileges

En el "scrip" donde otorgo los permisos a usuarios y roles tengo la costumbre de siempre iniciar con la siguiente setencia:
Código SQL [-]
delete from rdb$user_privileges where rdb$user = 'RHADMIN';

'RHADMIN' pueder ser un rol o un usuario, en este caso en particular es una role. Esto lo hago en vez de utilizar "revoke", para que asi evitar se quede con permisos a objetos a haya tenido con anterioridad.

Espero que esto te sirva de algo.

Saludos,

Gerardo Suárez Trejo

P.D. Por cierto, recuerda que también es posible otorgar permisos a procedimentos almacenados y a disparadores La verdad que esto no lo sabia, y resulta ser de mucha utilidad.
Responder Con Cita
  #3  
Antiguo 18-04-2009
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 293
Poder: 18
GustavoCruz Va por buen camino
Hola amigo Gallosuarez,
cuando dice: "Despues, asegúrate que se han otorgado los permisos a los usuarios y a los roles:"; quieres decir que debo asignarles los permisos a los usuarios al igual que a los roles??? o los permisos a los roles y después a los usuarios los roles correspondientes...

Te agradezco mucho por tus aportes.


Gustavo Cruz
Responder Con Cita
  #4  
Antiguo 18-04-2009
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 293
Poder: 18
GustavoCruz Va por buen camino
una vez más amigo Gallosuarez, he notado que existe un campo llamado rdb$description, cómo hago para llegar a él

porque la forma, habitual, de crear un rol no nos muestra, además, la forma de describirlo...

Gracias

Gustavo Cruz
Responder Con Cita
  #5  
Antiguo 18-04-2009
Gallosuarez Gallosuarez is offline
Miembro
 
Registrado: feb 2007
Posts: 92
Poder: 18
Gallosuarez Va por buen camino
Aclaraciones...

Gustavo:

A lo que me refería es a lo siguiente:

1.-Debes de crear tus usuarios y roles (no importa el orden al crearlos).
2.-Debes de dar los permisos que gustes a los roles.
3.-Asegúrate que exista los roles:
Código SQL [-]
SELECT *
FROM RDB$ROLES
4.-Asegúrate que los permisos fueron otorgados a los roles correctamente:
Código SQL [-]
SELECT *
FROM RDB$USER_PRIVILEGES
WHERE RDB$USER = 'NOMBRE DEL ROLE"
(ojo, el nombre del role DEBE de estar en mayúsculas)
En el campo de RDB$USER debe de aparecer las roles que fueron creadas.
En el campo de RDB$USER_PRIVILEGE debe de aparece un S para Select (ver, seleccionar), U para Update (cambiar, actualizar), I para Insert (insertar, agregar), D para Delete (borrar, eliminar). En caso de procedimientos Almacenados aparece una X de Execute (ejecutar).
5.- Finalmente si vuelves a correr la sentencia:
Código SQL [-]
SELECT *
FROM RDB$USER_PRIVILEGES
WHERE RDB$USER = 'NOMBRE DEL USUARIO"
En el compo RDB$USER debe de aparacer el nombre del usuario
En le campo RDB$RELATION_NAME debe de aparacer el nombre del Role que le estás asignándole.

Nota: Hay mas campos, algunos, por el nombre puedes deducir a que se refieren, sin embargo, te sugiero que leas la documentación que viene en la instalación de Firebird y allí podrás ver todos los detalles.

Saludos,
Gerardo Suárez Trejo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Usuarios y roles con BDE andresenlared Firebird e Interbase 1 13-11-2008 19:22:29
Usuarios y roles morta71 Firebird e Interbase 10 05-02-2008 09:36:58
De usuarios y roles dec Varios 29 21-11-2007 17:52:10
Ventajas e inconvenientes de VCL.NET johurgi Varios 2 30-10-2006 18:00:35
Inconvenientes al Conectarme al FireBird rogeriobeltran Firebird e Interbase 1 12-04-2006 02:01:59


La franja horaria es GMT +2. Ahora son las 13:02:37.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi