用于显示查询历史的 SQL 命令
Posted
技术标签:
【中文标题】用于显示查询历史的 SQL 命令【英文标题】:SQL command to display history of queries 【发布时间】:2011-12-10 16:59:26 【问题描述】:我想在我的 mysql 查询浏览器中显示我执行的 sql 命令历史记录。显示历史的sql语句是什么?
【问题讨论】:
听起来像是这个问题的转贴:***.com/questions/650238/… How to show the last queries executed on MySQL?的可能重复 【参考方案1】:@GoYun.Info 回答但使用 python 3
cat ~/.mysql_history | python3 -c "import sys; print(''.join([l.encode('utf-8').decode('unicode-escape') for l in sys.stdin]))"
【讨论】:
【参考方案2】:您可以从 ~/.mysql_history 中查看历史记录。但是文件的内容是由 wctomb 编码的。查看内容:
shell> cat ~/.mysql_history | python2.7 -c "import sys; print(''.join([l.decode('unicode-escape') for l in sys.stdin]))"
来源:Check MySQL query history from command line
【讨论】:
【参考方案3】:对于 MySQL > 5.1.11 或 MariaDB
SET GLOBAL log_output = 'TABLE';
SET GLOBAL general_log = 'ON';
看表mysql.general_log
如果要输出到日志文件:
SET GLOBAL log_output = "FILE";
SET GLOBAL general_log_file = "/path/to/your/logfile.log"
SET GLOBAL general_log = 'ON';
正如 jeffmjack 在 cmets 中提到的,除非您编辑配置文件(例如,编辑 /etc/mysql/my.cnf
,然后重新启动以应用更改),否则这些设置将在下次会话之前忘记。
现在,如果您愿意,可以tail -f /var/log/mysql/mysql.log
More info here: Server System Variables
【讨论】:
只是对上面的一些澄清:这里的复制粘贴命令用于 MySQL 的单个会话,例如您可以从交互式 MySQL 命令行输入这些。如果您希望它们成为 MySQL 实例的永久功能,则需要将这些命令放入 /etc/mysql/my.cnf 并重新启动 MySQL 服务。 另外请注意,如果/path/to/your/logfile.log
被删除,日志记录将停止,直到您再次执行SET GLOBAL general_log_file = "/path/to/your/logfile.log";
(或者如果您编辑了配置,可能会重新启动会话?)。【参考方案4】:
你会在那里找到它
~/.mysql_history
你会像这样使它可读(没有转义):
sed "s/\\\040/ /g" < .mysql_history
【讨论】:
【参考方案5】:看~/.myslgui/query-browser/history.xml
在这里您可以找到使用mysql_query_browser
进行的最后查询
(几天前)
【讨论】:
【参考方案6】:(Linux)
打开你的终端ctrl+alt+t
运行命令
cat ~/.mysql_history
你会得到所有以前的mysql查询历史享受:)
【讨论】:
【参考方案7】:试试
cat ~/.mysql_history
这将显示系统上运行的所有 mysql 命令
【讨论】:
不是全部,某些包含“密码”之类的字符串会出现抑制。 它通常也不是您打开的 MySQL CLI 的最新版本,因此您可能必须exit
MySQL 然后读取文件。
这仅显示登录用户执行的命令。
如何在 windowss 中做到这一点
其他命令是否有可能被抑制或无序?而且,日志会实时更新吗?【参考方案8】:
您可以查看查询缓存:http://www.databasejournal.com/features/mysql/article.php/3110171/MySQLs-Query-Cache.htm,但它可能无法让您访问实际查询,并且如果它确实有效,将会非常失败(微妙的双关语)
但 MySQL 查询浏览器很可能会在 MySQL 引擎之外维护自己运行的查询列表。您必须在您的应用中执行相同的操作。
编辑:请参阅 dan m 的评论导致此:How to show the last queries executed on MySQL? 看起来不错。
【讨论】:
以上是关于用于显示查询历史的 SQL 命令的主要内容,如果未能解决你的问题,请参考以下文章