Estou tentando criar um log das alterações em uma determinada tabela em um banco de dados. Para fazer isso, vou obter as informações sobre todos os campos da tabela original e criar uma nova usando uma função.
Além dos campos da tabela original, a nova tabela deverá conter a hora da alteração, o tipo da alteração (inserir, excluir, atualizar) e a identificação do usuário que fez a alteração.
Já descobri onde posso obter as informações sobre as colunas da tabela original no MySQL (tabela INFORMAÇÕES_SCHEMA.Columns), mas não sei onde posso encontrar as informações relacionadas ao usuário.
Será que alguém me pode apontar a direção certa, por favor?
A direção certa para isso é usar um plug-in de registro de auditoria. Existem algumas opções lá fora. Confira a postagem a seguir para obter mais informações
http://www.mysqlperformanceblog.com/2014/05/20/database-auditing-alternatives-mysql/
Minha preferência pessoal é o Percona Audit Plugin, mas você deve usar o Percona Server (MySQL Alternative) para isso.
Se você quiser evitar brincar com plugins, tenho uma coisa para você.
Você deve habilitar o log geral como uma tabela MySQL porque ele registra o seguinte:
A coluna nº 2
user_host
contém o usuário e o host do comando emitido.O restante da tabela de log geral fornece
Você pode achar o mecanismo de armazenamento CSV irritante para um log ativo. Você pode convertê-lo para MyISAM. Em seguida, você pode indexar o arquivo
event_time
. Como opção, você também pode criar um índice de prefixouser_host
.Em vez de reinventar a roda, não colocarei os detalhes da implementação neste post porque já escrevi posts sobre como fazer isso:
Jun 30, 2011
: Como faço para enviar os logs do MySQL para o syslog?Jan 08, 2012
: Como ativar o log geral do MySQL?Feb 11, 2012
: Registro geral do MySQLApr 04, 2013
: Teste de estresse do MySQL com consultas capturadas com log geral no MySQLJun 23, 2013
: Analisar MySQL General Query Log em tempo real?Apr 28, 2014
: O log geral do MySQL (no Windows) é muito grande para girar corretamente?De uma chance !!!