如何清除MySQL中的查询缓存?

27

我在根提示符下尝试了这个,但没有帮助。

mysql> RESET QUERY CACHE;

它展示了

Query OK, 0 rows affected (0.00 sec)

但是历史记录仍然存在。

我该如何清除或删除我输入的查询历史记录?

4个回答

41

查询缓存查询历史是两个不同的概念。

查询缓存

MySQL把执行过的查询语句和其结果存储在查询缓存中,这样当同样的查询被请求时能够快速响应(命中缓存)。运行RESET QUERY CACHEFLUSH TABLES来清除查询缓存。

命令历史文件

MySQL把在其自身shell中执行的命令存储在一个历史文件中。它位于你的主目录下(Unix):~/.mysql_history。删除此文件可以清除到目前为止的历史记录(来自shell)

rm -rf ~/.mysql_history
如果你想完全禁用历史记录,可以通过创建一个指向 /dev/null 的符号链接来实现(从shell中):
ln -s /dev/null $HOME/.mysql_history

7

Mysql有自己的shell。您可以通过删除历史记录所读取的文件来删除它,该文件存储在~/.mysql_history中。


2
这是关于清除MySQL历史记录还是查询缓存的内容吗? http://dev.mysql.com/doc/refman/5.1/en/query-cache.html - SimonSimCity
1
问题含义不明确。 - MikeKulls

2
如果我们确实是在回答如何清除“历史记录”(而不是缓存),并且我们正在谈论一个' nix平台...那么可能需要删除另一个重要的历史文件。即 /root/.mysql_history
当访问MariaDB(即MySQL的一个分支,如果您不知道),通常会以sudo方式启动。在这种情况下,您的客户端输入历史记录将被写入/root...而不是您的主目录。
如果出于安全考虑,您想清除mysql客户端和bash终端上的所有最近输入,请尝试执行以下操作:
rm -rf ~/.mysql_history
sudo rm -rf /root/.mysql_history
history -cw
clear

我在运行MySQL或MariaDB的CentOS和Debian上成功使用过这个。


0

在使用带有递归选项的rm命令时,我会非常谨慎,因为我一直被告诫在使用-r之前要三思而后行。

为什么不使用

rm ~/.mysql_history

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接