2017-10-03 10:39:46

如何处理mysql的history文件

今天使用mysql,想起linux下的命令行下面有一个history命令,它能将我们最近敲过的命令记录显示出来,然后我就想mysql命令有没有类似的呢?然后发现还真的有,在unix类操作系统下它会在用户的主目录下面生成一个.mysql_history,里面存放了我们敲过的mysql命令。不过这似乎并不是一件好事儿,因为它甚至能将明文密码显示出来,那么,应该怎么处理这个文件呢?

这里有两种处理办法:

  • 不让它生成这个文件

      rm .mysql_history
      ln -s /dev/null ~/.mysql_history
    

    单纯删掉它是不行的,因为mysql发现没有这个文件就会自动将它删除,所以删除它,然后创建一个到“黑洞”的软连接是间接的不生成这个文件的最好选择。

  • 每次做一些敏感操作后手动清空

       cat /dev/null > ~/.mysql_history
    

然后我们其实还可以改变这个文件的名称和位置,通过设置MYSQL_HISTFILE环境变量即可

MYSQL_HISTFILE=/home/mysql/.sql_history

有时我们实现想看看这个文件下的东东,我们会发现有很多\040这样东西,其实它是一个空格,至于为什么会这样,估计是底层做了些小花样吧。据说使用--without-readline选项编译源码会让它直接生成空格,不过我也懒得去试了,感兴趣的可以试试。~

也可以通过sed命令替换掉它来查看"真实"的mysql命令

sed "s/\\\040/ /g" < ~/.mysql_history

Permanent link of this article:http://nulls.cc/post/handle_mysql_history

-- EOF --