MySQL - Obtener IP del usuario que elimina un registro

   
Vista:

Obtener IP del usuario que elimina un registro

Publicado por Juan A. (2 intervenciones) el 27/08/2014 00:20:21
Bueno, mi consulta es la siguiente : Estoy haciendo un trigger que me permite llevar a otra tabla_y los registros eliminados de una tabla_x. Mi problema es que no se como hacerlo, para obtener la IP y el usuario de base de datos que está eliminando el registro. Estuve haciendo pruebas con information_schema.processlist, pero no se en que minuto obtener la información para incorporarla a un campo de la tabla_y. De antemano, gracias por la ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Obtener IP del usuario que elimina un registro

Publicado por xve (898 intervenciones) el 27/08/2014 08:42:47
Hola Juan, desde un trigger, hasta donde yo se no es posible...

No se cuando se ejecuta este trigger, si por un insert, delete o update...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Obtener IP del usuario que elimina un registro

Publicado por Juan A. (2 intervenciones) el 27/08/2014 15:25:49
Hola xve, muchas gracias por interesarte en mi problema. Te comento que lo que trato de hacer, es capturar la IP y el usuario de base de datos que elimina un registro de una tabla cualquiera. Obviamente, al usuario se le han otorgado los permisos para realizar esta tarea, pero con un usuario común de base de datos.
Para tratar de solucionar este tema y saber quien puede borrar un registro, es que cree un TRIGGER, que una vez que se borra el registro, automáticamente lo copia a una tabla alternativa, a fin de no perder los registros que el usuario esta borrando, pero, como mentaba anteriormente, necesito además obtener la IP y el usuario correspondiente que ejecutó la acción. El TRIGGER es así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
USE `blabla`;
DELIMITER $$
 
CREATE TRIGGER `TRG_Eliminacion` AFTER DELETE ON t_persona FOR EACH ROW
BEGIN
 
DECLARE vl_informacion VARCHAR200);
 
SET vl_informacion := (
SELECT concat(user, '-', host, '-', info)
FROM information_schema.processlist
WHERE
	(command = 'Delete')
);
		INSERT INTO t_personaaudit
(P_Id, P_Nombres, P_Direccion, P_IdUsuarioAudit, P_FechaModificacionAudit, P_AccionAudit, P_UsuarioAudit, P_Comentario)
VALUES
(OLD.P_Id, OLD.P_Nombres, OLD.P_Direccion, OLD.P_IdUsuario, 20140830, 'D', current_user(), vl_informacion);
END

Esto es mas o menos lo que tengo, lo que no me funciona es la obtención de los datos de MySQL (user, '-', host, '-', info de information_schema.processlist). Si me pudieras ayudar al respecto o si la solución es otra, te agradecería bastante que me lo hicieras saber. Gracias nuevamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar