2014-09-20 2 views
0

Если у меня есть пользователь, хост, тип команды, идентификатор потока и аргумент (данные из общего журнала mysql), как определить происхождение команды, как в каком сценарии или приложении это произошло? Просто зная, что информация не говорит мне многого. Я пытаюсь выяснить, откуда он.Есть ли способ отслеживать запросы на соединение mysql?

Я проверил свои журналы php и apache, но не смог определить, что может выдавать команды. Мне нужен какой-то прямой след.

ответ

3

Нет, на стороне сервера MySQL нет способа узнать, из какого приложения подключилось соединение. Единственной идентифицирующей информацией, которую может регистрировать сервер MySQL, является пользователь и хост, с которого произошло соединение.

Некоторые люди выстраивают свои приложения, чтобы добавлять комментарии к запросам SQL, и комментарий добавляется в журнал запросов:

SELECT ... FROM mytable /* ShoppingCart.java, method cancelOrder() */ 

Но если ваши приложения не делают этого, информация, конечно, не доступный.

Кроме того, перед отправкой запроса также обращаются клиентские полосы mysql, поэтому, если у вас есть сценарии SQL или пользователи, делающие специальные запросы, этот метод не работает.

+0

проклятье. У меня возникает эта проблема, когда я продолжаю получать команды «connect», около 3 в секунду, при этом пользователь является root. root - это тот же пользователь, который мой веб-сайт использует для подключения к базе данных, но я не уверен, действительно ли это сценарий на моем веб-сайте, выдающий команду. Я предполагаю, что единственный способ определить, будет ли это что-то на моем веб-сайте, - удалить весь сайт, проверить и повторно загрузить. я бы хотел избежать этого. –

+0

@ChrisScott Если у вас есть одно включение для подключения, вы можете создать нового пользователя, предоставить этому пользователю права, необходимые и изменить учетные данные в этом включении. Если он распространяется, редактор с поиском и заменой файлов будет удобным. – VMai

+0

Я действительно обнаружил происхождение. Буквально в любое время, когда что-либо с моего сервера подключается к mysql, пользователь, используемый командой, будет постоянно выпускать эти команды «connect», а mysql все еще работает. Это bizzare: http://community.bitnami.com/t/help-keep-getting-connection-commands-to-mysql-slows-down-my-server/26037 –

0

Возможно, попробуйте функцию php с именем debug_backtrace()? Он возвращает массив, содержащий вызовы функции обратной линии с именем файла и именем функции.

Как это:

$trace = debug_backtrace(); 
var_dump($trace); 

Я только ответить на этот вопрос, потому что у вас есть PHP тег в вашем вопросе, так что это самое вы можете сделать в PHP я думаю.

+0

, но где бы я это положил? в любом ol php-файле на моем сервере? Я могу только подозревать, что php выдал команды. –

Смежные вопросы