有没有办法跟踪mysql连接请求?

时间:2014-09-20 19:24:23

标签: php mysql

如果我有用户,主机,命令类型,线程ID和参数(来自mysql常规日志的数据),我如何确定命令的来源,因为它来自哪个脚本或应用程序?只知道信息并没有告诉我多少。我正试图找出它的来源。

我检查了我的php和apache日志,但无法确定发出命令的内容。我需要某种直接追踪。

2 个答案:

答案 0 :(得分:3)

不,没有办法在MySQL服务器端知道连接来自哪个应用程序。 MySQL服务器可以记录的唯一标识信息是用户和发起连接的主机。

有些人设计他们的应用程序以向SQL查询添加注释,并将注释添加到查询日志中:

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

但如果你的应用不这样做,那么这些信息当然不可用。

mysql客户端在提交查询之前也会删除注释,因此如果您有SQL脚本或用户进行即席查询,则此方法无法正常工作。

答案 1 :(得分:0)

也许尝试名为debug_backtrace()的php函数? 它返回一个数组,其中包含带有文件名行和函数名的回溯函数调用。

像这样:

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

我只回答这个问题,因为你的问题中有PHP标签,所以这是我用PHP做的最多的事情。