AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 65817
Accepted
m-oliv
m-oliv
Asked: 2014-05-24 17:31:12 +0800 CST2014-05-24 17:31:12 +0800 CST 2014-05-24 17:31:12 +0800 CST

É possível obter as informações de qual usuário alterou o que em um banco de dados?

  • 772

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?

mysql
  • 2 2 respostas
  • 159 Views

2 respostas

  • Voted
  1. eroomydna
    2014-05-25T02:25:15+08:002014-05-25T02:25:15+08:00

    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.

    • 1
  2. Best Answer
    RolandoMySQLDBA
    2014-05-25T11:21:40+08:002014-05-25T11:21:40+08:00

    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:

    mysql> show create table mysql.general_log\G
    *************************** 1. row ***************************
           Table: general_log
    Create Table: CREATE TABLE `general_log` (
      `event_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      `user_host` mediumtext NOT NULL,
      `thread_id` bigint(21) unsigned NOT NULL,
      `server_id` int(10) unsigned NOT NULL,
      `command_type` varchar(64) NOT NULL,
      `argument` mediumtext NOT NULL
    ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='General log'
    1 row in set (0.07 sec)
    
    mysql>
    

    A coluna nº 2 user_hostcontém o usuário e o host do comando emitido.

    O restante da tabela de log geral fornece

    • qual comando foi executado
    • quando foi executado
    • ID do processo da lista de processos no momento em que o comando foi executado

    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 prefixo user_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 MySQL
    • Apr 04, 2013: Teste de estresse do MySQL com consultas capturadas com log geral no MySQL
    • Jun 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 !!!

    • 0

relate perguntas

  • Existem ferramentas de benchmarking do MySQL? [fechado]

  • Onde posso encontrar o log lento do mysql?

  • Como posso otimizar um mysqldump de um banco de dados grande?

  • Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?

  • Como um grupo pode rastrear alterações no esquema do banco de dados?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve