Hola. Les comento que necesito otorgar privilegios solo para realizar consultas a un usuario. Para ello use el siguiente comando: GRANT SELECT ON nombre_de_la_tabla TO nombre_usuario pero no funciono, quizas me este faltando algo mas. Bueno desde ya muchas Gracias.
Saludos.
Hola Lorena, eso deberia funcionar. Que error te da cuando el usuario hace la consulta a la tabla?
¿Le diste permiso de conexion a la base?
Para darle permisos de conexión: Grant connect to nombre_usuario
Por default va a recibir los permisos del usuario public, que seguramente tiene permisos de Select sobre esa tabla.
Pero si solo queres darle permiso de lectura sobre esa tabla y no otros permisos sobre esa tabla y el resto de las tablas de la base, lo que necesitas hacer es algo mas complicado, fijate el mensaje siguiente:
Hola Alejandro, en realidad no me da un error pero me deja realizar operaciones de INSERT igual.
Lo que yo necesito es asignarle a un usuario en particular solo permiso para consultas para todas las tablas.
Voy a mirar el enlace que me recomendaste y cualquier duda me vuelvo a contactar.
Gracias!. Saludos.
Bueno, fijate ese link, ya que deberás hacer lo que se indica alli.
Saludos!
Alejandro, por favor me podrias indicar cual es la sentencia que se debe agrrgar al proceso sp_inicio_sesion para indicar que el usuario que se esta conectando a la base de datos de Guarani lo hará con el Role “guarani”?
Gracias. Saludos
Hola Alejandro, la sentencia que tendria que agregar en el sp_inicio_sesion seria algo asi:
Select usuario into vUsuario from sga_datos_usuarios where usuario = ‘consulta’;
IF vUsuario = ‘consulta’ THEN
SET ROLE usuarios_externos;
ELSE SET ROLE guarani;
END IF;
END;
Por favor si me podrias orientar en esto te agradeceria mucho.
Saludos.
Sería algo asi:
BEGIN
DEFINE stienelog char(1);
DEFINE vUsuario varchar(8);
– Verifico el Modo de la Base. Debe tener logging
EXECUTE PROCEDURE sp_tiene_log(pDB) INTO stienelog;
IF sTieneLog <> ‘S’ THEN
raise exception -746,0,‘La Base de Datos debe tener “Logging”. Contacte al Administrador de BD’;
END IF;
[b]
– Saca el usuario que esta conectado
SELECT USER INTO vUsuario
FROM acc_usuarios
WHERE usuario = USER;
IF vUsuario = ‘consulta’ THEN
SET ROLE usuarios_externos;
ELSE
SET ROLE guarani;
END IF;[/b]
– Modo de Lockeo.
SET LOCK MODE TO WAIT 3;
END;