mysql会给出我们最近执行的SQL命令和脚本;同linux command保存在~/.bash_history一样,你用mysql连接MySQL server的所有操作也会被记录到~/.mysql_history文件中,这样就会有很大的安全风险了,如添加MySQL用户的sql也同样会被明文记录到此文件中。
1,查看你系统的~/.mysql_history隐藏文件
(我的测试环境下,一般linux的mysql用户来管理,所以在/home/mysql目录下会有这个文件)
-bash-3.2$ ls -al | grep mysql_
-rw------- 1 mysql mysql 5006 Apr 10 18:53 .mysql_history
 
 
2,测试MySQL用户管理的SQL会被记录
 
2.1 用linux用户mysql, 使用mysql命令行工具登录MySQL server. 添加用户"his_user@localhost",并设置密码
 
mysql> grant select on rep.* to his_user@localhost identified by '123';
Query OK, 0 rows affected (0.00 sec)
 

mysql>

2.2 断开刚才的mysql连接,查看/home/mysql/.mysql_history文件,可见刚才添加mysql user的操作已被记录,包括明文密码123.

 
-bash-3.2$ tail -1 ~/.mysql_history
grant select on rep.* to his_user@localhost identified by '123';
 
注意说明:这个.mysql_history不是只存在于MySQL所在的Server, 任何你能够远程用mysql连接,都会在此server上的当前用户的~目录下创建这个隐藏文件。
 
3, 如何清除使用痕迹,如果在生产环境中,一般不会依赖此记录来作审计,从上面演示可以看出,还存在一定的风险。
 
2.1 完全清除~/.mysql_history。
 
2.1.1 删除现在的.mysql_history文件
-bash-3.2$ rm ~/.mysql_history

 
2.1.2 创建它的软连接(原因后面说明)
-bash-3.2$ ln -s /dev/null ~/.mysql_history
 
查看软连接创建成功。
-bash-3.2$ ls -al | grep mysql_

lrwxrwxrwx 1 mysql mysql 9 Apr 10 20:30 .mysql_history -> /dev/null

测试是否生效:连接mysql, 操作,断开连接,查看操作是否还被记录。
mysql> show databases;

+--------------------+
| Database |
+--------------------+
| information_schema |
| backup |
-------------------------
mysql> exit
Bye

-bash-3.2$ cat ~/.mysql_history

 
可见,上面的show databases;操作命令没有被记录,同时当你断开ssh后,重新连接mysql, 此时按“向上”键已无历史操作记录提示,说明生效了。
想要重新生效, 你直接删除掉~/.mysql_history,当你下次再连接,退出后,就会重新创建此文件了。
 
2.2 只清除敏感信息;如果不想完全禁用此功能,只是想每次做一些敏感操作后,把此文件清空便可以了。
 
-bash-3.2$ cat /dev/null > ~/.mysql_history
 
比如你修改了MySQL用户信息,退mysql connection后,执行上操作,把全部操作痕迹清空了。
 
3 ~/.mysql_history文件的产生原理
 
3.1 因为mysql工具本身就是有一个shell, 每次mysql连接退出后,都会把此次操作的信息记录到~/.mysql_history文件中,
如果此文件不存在,会先创建,再记录(像上面的把它删除后,或才安装的MySQL)
 
3.2 此文件的名字,其实是根据MYSQL_HISTFILE这个linux环境变量来设置了, 默认是这个~/.mysql_history值,那我们测试一下其他值。
3.2.1 在linux用户的~/.bash_profile 中添加一行export MYSQL_HISTFILE=/home/mysql/.mydb_history
目录根据你的linux用户自己设置,我的测试用户是mysql.
-bash-3.2$ vi ~/.bash_profile
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
PATH=$PATH:/usr/sbin
export MYSQL_HISTFILE=/home/mysql/.mydb_history
 
3.2.2 退出linux连接,重新登录linux; 使用mysql来连接数据库,操作,退出connection, 检查~/.mydb_history隐藏文件是否创建,并检查刚才操作是否被记录。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
----------------------
//退出mysql
mysql> exit
Bye
//查看隐藏文件是否创建
-bash-3.2$ cd ~; ls -tal | grep mydb_history
-rw------- 1 mysql mysql 16 Apr 10 20:55 .mydb_history
// 查看“show databases"命令是否被正确记录到文件中
-bash-3.2$ tail -1 ~/.mydb_history
show databases;
 
从上可以说明:此文件的文件名来自于MYSQL_HISTFILE。

MySQL使用痕迹清理~/.mysql_history的更多相关文章

  1. linux入侵控制与痕迹清理

    后门 (1)开机自动反弹shell (2)linux后门 Rookit 目前常用的有:t0rn /mafix/enyelkm 等 mafix rootkit Mafix是一款常用的轻量应用级别Root ...

  2. MySQL表碎片清理

    MySQL大表清理 生产环境data库业务表base_data大小:500G,data_free:31G mysql> SELECT table_schema,table_name,data_f ...

  3. Linux 入侵痕迹清理技巧

    清除history历史命令记录 vim ~/.bash_history //编辑history记录文件,删除部分不想被保存的历史命令 history -c //清除当前用户的history命令记录 H ...

  4. windows痕迹清理的基本思路和思考逻辑

    1.痕迹清理的基本概念 在渗透测试的过程结束后清理自己在从开始接触到目标计算机是开始所有操作的痕迹 2.痕迹清理的目的 为下一步的渗透测试拖延时间 提高隐蔽性 所有的痕迹清理都不是绝对的,只要和计算机 ...

  5. MySQL bin-log 日志清理方式

    MySQL bin-log 作用   1.数据恢复:如果你的数据库出问题了,而你之前有过备份,那么可以看日志文件,找出是哪个命令导致你的数据库出问题了,想办法挽回损失. 2.主从服务器之间同步数据:主 ...

  6. 彻底删除mysql服务(清理注册表)

    前言 由于安装某个项目的执行文件,提示要卸载MySQL以便它自身MySQL安装,然后我禁用了MYSQL服务,再把这个文件夹删除后,发现还是提示请卸载MYSQL服务. ----------------- ...

  7. (dfs痕迹清理兄弟篇)bfs作用效果的后效性

    dfs通过递归将每种情景分割在不同的时空,但需要对每种情况对后续时空造成的痕迹进行清理(这是对全局变量而言的,对形式变量不需要清理(因为已经被分割在不同时空)) bfs由于不是利用递归则不能分割不同的 ...

  8. MySQL binlog 自动清理脚本

    # vim /data/scripts/delete_mysql_binlog.sh 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...

  9. Linux之入侵痕迹清理总结

    rm -f -r /var/log/*rm .bash_historyrm recently_used

随机推荐

  1. Web API 实现JSONP或者安装配置Cors跨域

    前言 照理来说本节也应该讲Web API原理,目前已经探讨完了比较底层的Web API消息处理管道以及Web Host寄宿管道,接下来应该要触及控制器.Action方法,以及过滤器.模型绑定等等,想想 ...

  2. 系分过了,mark一下,就从这里开始吧

    算是重新归回吧,发现写博客还是这里人气比较旺,开源中国不行,动弹人气还可以,不过都没啥节操, 这么多年没来了,发现竟然还排名1150,不容易,继续加油.有种回娘家的赶脚

  3. 20135202闫佳歆--week 7 Linux内核如何装载和启动一个可执行程序--实验及总结

    week 7 实验:Linux内核如何装载和启动一个可执行程序 1.环境搭建: rm menu -rf git clone https://github.com/megnning/menu.git c ...

  4. 20145219 gdb调试汇编堆栈分析

    20145219 gdb调试汇编堆栈分析 代码gdbdemo.c int g(int x) { return x+19; } int f(int x) { return g(x); } int mai ...

  5. diff: /../Podfile.lock: No such file or directory

    从github上下载源码运行会报错:问题1描述: diff: /../Podfile.lock: No such file or directory diff: /Manifest.lock: No ...

  6. C#出题库项目的总结(2)

    前记:好吧好吧,我好好的自我检讨,这个总结拖了这么久才来写,而且一周多没有看技术相关的东西,实在罪过,不过因为想做的事情太多,所以时间的分配确实是一个很严肃的问题,不是时间不够用,是我自己没有做好时间 ...

  7. IT男的”幸福”生活

    IT男的”幸福”生活 IT男的”幸福”生活"续1 IT男的”幸福”生活"续2  IT男的”幸福”生活"续3  IT男的”幸福”生活"续4  IT男的”幸福”生活 ...

  8. 用html5+js实现掌机游戏赛车demo

    最近无聊,用html5+js做了一个以前玩过的掌机赛车游戏,顺便学习一下画布的api以及巩固一下js基础. 游戏界面,没做什么美化. 游戏规则:游戏界面分为三列,黑色方块随机落下,红色方块可以在三列自 ...

  9. Provider 错误 '80004005' 未指定的错误 /conn.asp,行 23

    网站本来正常,由于网站修改了title标签的内容,想要百度快照快点更新. 就自己提交快照.在下面网站: http://zhanzhang.baidu.com/sitesubmit/index 提交UR ...

  10. 【niubi-job——一个分布式的任务调度框架】----niubi-job这下更牛逼了!

    niubi-job迎来第一次重大优化 niubi-job是一款专门针对定时任务所设计的分布式任务调度框架,它可以进行动态发布任务,并且有超高的可用性保证. 有多少人半夜被叫起来查BUG,结果差到最后发 ...