当开发使用 MySQL 的应用程序时,实时观察正在发出的请求会很有用。
如何查看所有传入的 MySQL 查询?
答案1
以root身份编辑/etc/mysql/my.cnf
并在底部添加此段落:
[mysqld]
general_log=on
general_log_file=/var/log/mysql/query.log
仍然以 root 身份运行以下命令:
service mysql stop
service mysql start
然后观察日志:
tail -f /var/log/mysql/query.log
请注意,此设置会使 MySQL 速度降低约 15%,因此当您不再需要该段落时,请删除或注释该段落(然后重新启动)。
答案2
虽然 Nicolas Raoul 的回答是正确的,但请注意,从 mysql-server-5.7 开始,该文件是由和/etc/mysql/my.cnf
中的配置文件构建的。/etc/mysql/conf.d
/etc/mysql/mysqld.conf.d
因此,要使解决方案奏效,/etc/mysql/mysqld.conf.d/mysqld.cnf
必须修改文件:。因此,以下几行:
#general_log_file = /var/log/mysql/mysql.log
#general_log = 1
必须取消注释,保存文件,然后重新启动服务sudo service mysql restart
。
否则,您可能会收到错误。
答案3
使用 Linux Shell 脚本运行此命令
mysqladmin -uroot -p'mysql_password' -i 2 进程列表
将生成进程列表并每分钟自动刷新