在Ubuntu上记录MySQL查询

Sou*_*rav 1 mysql linux ubuntu

我需要将SQL记录到文件中,以便稍后检查哪个SQL运行.

所以我打开opt/lampp/etc/my.cnf并添加这些行

log_slow_queries  
log_queries_not_using_indexes =1  
long_query_time = 1  
slow_query_log = 1  
slow_query_log_file = "/opt/lampp/logs/query.log"
Run Code Online (Sandbox Code Playgroud)

但它没有记录查询它甚至没有创建query.log文件,所以我创建了一个带有名称的空文件,但它仍然无法正常工作.

Edit

[mysqld]
log_slow_queries
log_queries_not_using_indexes =1
long_query_time = 1
slow_query_log = 1
general_log = 1
slow_query_log_file = /opt/lampp/logs/query.log
general_log_file = "/opt/lampp/logs/query.log"
Run Code Online (Sandbox Code Playgroud)

Mic*_*ior 7

这只会记录慢查询.如果要查看所有查询,则需要常规日志.

general_log = 1
general_log_file = "/opt/lampp/logs/query.log"
Run Code Online (Sandbox Code Playgroud)

请注意,您需要重新启动服务器才能使其生效.此外,您应该仅在测试期间使用此类型的日志记录,因为它确实会导致速度降低.

正如其他用户提到的,这可能是权限问题.首先,检查MySQL正在运行的用户ps -u -p $(pgrep mysql).用户名将显示在第一列下USER.在你的情况下,似乎用户是nobody.您可以通过查看用户的默认组groups nobody.这应该打印出类似的东西nobody : nogroup.

要修复文件的权限,只需运行即可chown nobody:nogroup /opt/lampp/logs/query.log.