Suponiendo que está usando una versión suficientemente reciente de mySQL, usaría triggers , personalmente.
Suponiendo que funcionen más o menos como los que estoy familiarizado en otros productos (por ejemplo, Oracle), su problema se vuelve más simple, en el sentido de que coloca un disparador de "actualización" en la fila y lo usa para actualizar la tabla de auditoría para cada campo te interesa.
Posible advertencia:si su aplicación inicia sesión en la base de datos como un solo usuario (un enfoque común si utiliza la agrupación de conexiones, por ejemplo), puede ser complicado registrar la identidad real del usuario.