MySQL-哪个文件正在运行查询
我试图跟踪一个问题,我需要知道哪个文件正在运行一个特定的查询,是否可以看到哪个文件正在执行一个命令MySQL-哪个文件正在运行查询,mysql,Mysql,我试图跟踪一个问题,我需要知道哪个文件正在运行一个特定的查询,是否可以看到哪个文件正在执行一个命令 我已经启用了general_log,可以看到查询。仅从SQL查询无法判断运行它的是哪个代码文件 在您的问题中,您没有说明您正在使用什么编程语言,或者您的应用程序如何连接到数据库,或者您是否正在使用数据访问层或ORM库 但在许多编程语言中,数据库连接是由一个文件创建的,而查询是在其他代码文件中形成的。它们甚至可能由不同的代码文件组成,最终将查询发送到MySQL服务器执行 您需要通读代码,了解查询是如
我已经启用了general_log,可以看到查询。仅从SQL查询无法判断运行它的是哪个代码文件 在您的问题中,您没有说明您正在使用什么编程语言,或者您的应用程序如何连接到数据库,或者您是否正在使用数据访问层或ORM库 但在许多编程语言中,数据库连接是由一个文件创建的,而查询是在其他代码文件中形成的。它们甚至可能由不同的代码文件组成,最终将查询发送到MySQL服务器执行 您需要通读代码,了解查询是如何形成和执行的 一些程序员在SQL查询中添加注释,这些注释最终会出现在查询日志中
$sql = "/* File: reports.php; Line: 278 */ SELECT * FROM mytable WHERE col1 = ? ORDER BY blah";
这需要一些工作来进行初始设置,但随后您可以使用查询日志找出从何处运行任何查询
请注意,这不适用于由mysql
客户端运行的查询,因为该客户端在执行查询之前删除注释
请回复您的评论: 如果您认为您的数据库遭到黑客攻击,那么首先您应该确保您的网络安全足以防止任何外部客户端访问您的数据库。也就是说,只允许您自己的应用程序连接。您可以结合使用网络防火墙和SQL
GRANT
语句来实现这一点
令人惊讶的是,有多少人在暴露于互联网的服务器上运行数据库!如果这是你,那么你应该立即修复它。关闭你的网站,直到你这样做。这是不安全的
一旦您确定只有您的应用程序具有访问权限,并且没有其他客户端可以连接,那么您就可以向您的应用程序添加如上所述的代码,以便每个查询都能识别自身
如果使用数据库访问层,则可能只需要在一个位置执行此操作。如果SQL查询分散在应用程序中,则需要做更多的工作,因为您必须编辑每个文件,直到您确定哪个文件是查询源。回答很好。不幸的是,我正在尝试跟踪一个黑客,我不确定文件是从谁/哪里运行的。