it-swarm-eu.dev

aktivita protokolování mysql od konkrétního uživatele nebo ip

Mám server mysql.

K serveru přistupuje moje aplikace a externí auditor (osoba používající pracovní stůl mysql). Auditor má specifické uživatelské jméno a heslo a vyhrazenou IP a je udělen pouze pro vybraná oprávnění.

Musím se přihlásit od auditora. Je to možné nějak? Pokud ne, mohu protokolovat balíčky, které přicházejí ze sítě?

8
darpet

Mohli byste použít obecný protokol. Ve skutečnosti byste měli zkusit použít tabulkovou verzi MySQL obecného protokolu.

Pokud spustíte toto:

SHOW CREATE TABLE mysql.general_log\G

Měli byste vidět něco takového:

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` int(11) 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.14 sec)

mysql>

The user_Host sloupec zaznamená uživatele MySQL a IP adresu/DNS jméno, ze kterého příkaz vyšel.

Pravděpodobně právě teď říkáte: „Ta tabulka je soubor CSV. Musel bych ji analyzovat.“ To je pravda, museli byste. Věděli jste však, že ji můžete převést na tabulku MyISAM? Vlastně jsem to vyzkoušel pro jednoho z mých zaměstnavatelů pro hostování DB a napsal jsem příspěvek s vysvětlením (viz Feb 24, 2011 poslat níže).

Zde jsou základní kroky:

  1. Vytvořte tabulku mysql.general_log MyISAM

    Spusťte následující:

    CREATE TABLE mysql.general_log_original LIKE mysql.general_log;
    ALTER TABLE mysql.general_log ENGINE=MyISAM;
    ALTER TABLE mysql.general_log ADD INDEX (event_time);
    
  2. Povolit obecný protokol

    Přidejte následující k /etc/my.cnf

    [mysqld]
    log-output=TABLE
    general-log
    

    Pokud chcete také textovou verzi obecného protokolu, přidejte toto:

    [mysqld]
    log-output=TABLE,FILE
    general-log
    general-log-file=/var/log/mysql_general.log
    
  3. Restartujte mysql

    Jednoduše spusťte service mysql restart

Mám mnoho příspěvků o používání obecného protokolu a pomalého protokolu jako tabulek MyISAM:

CAVEAT

MySQL 5.5.28 nedávno představilo plugin protokolu auditu a jak jej nainstalovat .

Zde jsou možnosti

Jsou to pro mě nové, takže nemám v tuto chvíli na zásuvném modulu protokolu auditu žádné výhody ani nevýhody.

9
RolandoMySQLDBA