【问题标题】:SQL command to display history of queries用于显示查询历史的 SQL 命令
【发布时间】:2011-12-10 16:59:26
【问题描述】:

我想在我的 MYSQL 查询浏览器中显示我执行的 sql 命令历史记录。显示历史的sql语句是什么?

【问题讨论】:

标签: 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

      1. SET GLOBAL log_output = 'TABLE';
      2. SET GLOBAL general_log = 'ON';
      3. 看表mysql.general_log

      如果要输出到日志文件:

      1. SET GLOBAL log_output = "FILE";
      2. SET GLOBAL general_log_file = "/path/to/your/logfile.log"
      3. 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? 看起来不错。

            【讨论】:

              猜你喜欢
              • 2019-01-27
              • 1970-01-01
              • 2013-01-27
              • 1970-01-01
              • 2019-10-22
              • 1970-01-01
              • 1970-01-01
              • 2011-08-09
              • 2014-02-26
              相关资源
              最近更新 更多