
Я купил программу, которая работает на моей машине CentOS. Она написана на PHP. Она использует базу данных MYSQL.
Одной из функций программы является регистрация новых пользователей. Она использует SQL-запрос для добавления пользователей. Я хочу написать программу на Python, которая также может добавлять пользователей в эту базу данных, но я не знаю, какие свойства и таблицы она добавляет (это довольно большая база данных).
Можно ли как-то отслеживать, какие SQL-запросы эта программа отправляет в MYSQL?
решение1
Есть два способа сделать это: более простой (и, возможно, недостаточно хороший) и более сложный, который на 100% даст вам то, что вы ищете.
Проще всего просто искать запросы по мере их выполнения с помощью
SHOW FULL PROCESSLIST
команды. Это покажет вам запросы, но если действие (SQL-запрос, который вы ищете) выполняется редко, вам придется долго ждать и часто выполнять команду выше, чтобы получить желаемый результат. Есть и лучший способ.Запустите MySQL с включенным ведением журнала, и тогда вы сможете увидеть все SQL-запросы после перезапуска сервера MySQL. Проблема в том, что файл журнала может быть очень большим, и для неопытного пользователя может потребоваться много времени, чтобы найти то, что вы ищете, но этот подход, как правило, лучше. Вариант прост:
mysqld --log=name_of_log_file.log
Это так просто.
Только одно предупреждение: когда вы найдете то, что искали, перезапустите MySQL, но на этот раз с отключенным ведением журнала, так как это ускорит работу базы данных и не займет дискового пространства на вашем сервере.
решение2
Чтобы увидеть, какие запросы MySQL выполняются на любой платформе, имеющей mysql.
Запрос MySQL выглядит следующим образом:
SHOW FULL PROCESSLIST
для получения подробной информации.SHOW PROCESSLIST
для обрабатываемых в настоящее время запросов.
Открыть # mysql
в терминале.
mysql> SHOW FULL PROCESSLIST;
mysql> SHOW PROCESSLIST;
для получения дополнительной документации см.показать-список процессов.