LINUX.ORG.RU

Как вычислить кто делает определенные запросы к базе?

 


0

1

Ситуация такая:
есть в базе таблица с пользователями (назовем ее users) - в ней периодически кто-то правит данные пользователей методом DELETE/INSERT (похоже на то, поскольку меняется id). Так вот id меняться ни в коем случае не должен, т.к. на него завязано много других таблиц. Но, блин, меняется! Только UPDATE должен применяться. От этого база потихоньку превращается в кашу, которую мне разгребать. Никто из разработчиков в таком поведении не сознается. Я все свои скрипты уже три раза перепроверил - нет нигде таких запросов.
Вопрос: можно ли как-то вычислить откуда идут подобные запросы? С какого ip? Или хоть какую-то идентифицирующую информацию получить.

★★★★★

... в ней периодически кто-то правит данные пользователей методом DELETE/INSERT ... Только UPDATE должен применяться.

В принципе, можно временно на табличку навесить BEFORE DELETE триггер и в нем выбрасывать ошибку с помощью SIGNAL. И посмотреть, где и у кого код заглючит... Ну и инфу доступную в сообщение об ошибке включить.

vinvlad ★★
()

-включить подробные логи

-включить tcpdump, слушать и записывать все запросы к mysql

Harald ★★★★★
()
Последнее исправление: Harald (всего исправлений: 1)

Так вот id меняться ни в коем случае не должен, т.к. на него завязано много других таблиц.

ну вот и завяжи правильно используя внешние ключи
FOREIGN KEY ... ON DELETE RESTRICT и тот кто удаляет будет фиксить свой баг

kiotoze ★★★★
()

Только UPDATE должен применяться

А что мешает делать UPDATE id? Но вообще тебе правильно советуют сделать FK с restrict.

no-such-file ★★★★★
()

Логи, сделать триггер, как уже советовали, можно еще сделать связку watch + запрос show processlist и в файл вывод направить, может чего найдешь интересного.

garik_keghen ★★★★★
()
Ответ на: комментарий от garik_keghen

БЛИН! ХА-ХА! И еще БЛИН!

Извините)))

Вычислил диверсанта)
Короче, я пытал разработчиков, а этот мордор устроил ЗАКАЗЧИК

Короче, есть 2 части веб-приложения с разными командами разработки. Связаны между собой посредством апи, без прямого доступа в бд друг-друга. В обоих частях есть список пользователей, и он должен совпадать. И если в первой пользователь поменял почту, к примеру, то вторая часть откажется его пускать. Так вот.. В таких случаях заказчик САМ менял во 2 части соответствующие данные. И да, методом DELETE/INSERT всей строки)) Естественно id менялся.

Нахрена он это делал сам и почему не поручил никому автоматизировать - хрен его знает)

Объяснил ему, что он немного не то делает) Вроде понял) Автоматизация, естественно, на мне, раз я предложил.

Можно я еще поржу немного?))

Qwentor ★★★★★
() автор топика
Ответ на: комментарий от Qwentor

Объяснил ему, что он немного не то делает) Вроде понял)

Есть такое понятие - «целостность базы данных». И есть в SQL соответствующие возможности для поддержания этой самой целостности. Так вот, вместо того, чтобы объяснять всяким рукосуям, чего можно и нельзя, лучше и правильнее «зашить» соответствующие правила в схему БД - чтобы такого в принципе не могло быть. А то, сегодня Заказчик накосячил - завтра какой-нибудь программист такое же отчебучит...

vinvlad ★★
()

Орды разработчиков про основы проектирования БД ни сном ни духом не знают. Я могу понять как они получают диплом, образование теперь должно давать прибыля, а не учить, но ёпт! Собеседование же они как-то прошли?

perl5_guy ★★★★★
()

Follow the below-given steps and get that who marks certain queries to the database: Step 1: Select the fields. Step 2: Select the sorting order. Step 3: Select the search conditions. Step 4: Select the type of query. Step 5: Assign aliases if desired. Step 7: Modify the query.

For Completed go through the link given below: https://wiki.openoffice.org/wiki/Documentation/OOoAuthors_User_Manual/Getting...

Want to tutorials know more about this click here: https://hackr.io/tutorials/learn-sql

vijayhackr
()
14 мая 2019 г.
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.