Откройте конфиг MySQL редактором, которым пользуетесь.
К примеру nano:
nano /etc/mysql/my.cnf
найдите блок [mysqld] и в его конец добавьте строку:
log=/var/log/mysql.log
Проверте есть ли у вас этот файл по заданному пути, если нет, то создайте
и установите права:
# touch /var/log/mysql.log
# chown mysql:mysql /var/log/mysql.log
Перезапустите MySQL, если пользуетесь панелью, то через панель.
Если нет, то командой:
/etc/init.d/mysql restart
Получите логи вида:
Код:
Tcp port: 3306 Unix socket: /var/run/mysqld/mysqld.sock
Time Id Command Argument
170122 21:55:01 1 Connect debian-sys-maint@localhost on
1 Quit
2 Connect debian-sys-maint@localhost on
2 Quit
В строке Connect указан пользователь, выполняющий запрос
По логу ищите запросы update вида:
Код:
45 Query UPDATE `имя_нужной_таблицы` SET
то есть ищите выражение UPDATE `имя_нужной_таблицы`
Смотритие время запроса и сверяетесь с логом Web-сервера.Что там в это время происходило.
Не включайте больше чем на несколько суток, может съесть всё свободное место.
Чтобы не править файл конфига, когда потребуется
временно отключить логирование,
используйте команду.
# mysql
mysql> SET GLOBAL general_log = 'OFF';
Соответственно, если потребуется снова включить
SET GLOBAL general_log = 'ON';
Всё это без перезапуска MySQL.
Когда закончите расследование, то закомментируйте в конфиге строчку log=
По поводу доступа извне:
Если есть Phpmyadmin то под root зайдите и посмотрите вкладку "Пользователи"
Если вы не подключаетесь к MySQL извне, а у вас в графе Хост, кроме имени localhost, есть ещё значения типа % или Ip-адреса прописаны, то вас это должно насторожить.
В общем случае достаточно прибить таких пользователей, только не удалите root и юзеров, от имени которых работают ваши сайты, но у них должно быть localhost в этой графе.
Или посмотрите через командную строку, запустив клиента mysql:
SELECT User,Host FROM mysql.user;
Также можно прописать запрещающие правила в Iptables, или убрать разрешающие.
И в /etc/mysql/my.cnf убрать или изменить строку bind-address.
Ну и всякое бывает:
У вас лишних пользователй на серевере нет? Посмотрите на всякий случай.
cat /etc/passwd
Есть ещё более изящный способ логирования:
Можно повесить на таблицы триггеры, которые будут писать в другую таблицу лог при операциях UPDATE. Поэтому и спрашивал, какие данные у вас меняют.