禁用 MySQL 历史记录 – 清除 ~/.mysql_history 和 MYSQL_HISTFILE
问题:如何禁用 mysql 历史记录?我不希望 mysql 记住我从 mysql> 提示符键入的先前命令。这对我来说很重要,因为当我键入一些包含密码的 sql 命令时,我看到存储在 ~/.mysql_history 中的明文密码,这是我不想发生的。
答: Bash 历史功能将在命令行中键入的 Unix 命令存储在 ~/.bash_history 文件中。与 bash shell 类似,mysql 将在 mysql> 提示符中键入的命令存储在~/.mysql_history文件中。
在本文中,让我们回顾一下如何禁用 mysql 历史记录。
1.从mysql>提示符执行一些sql命令
从 unix 命令行连接到 mysql 并执行如下所示的几个 sql 命令。
$ mysql -u root -pyour-password
mysql> show databases;
mysql> use information_schema;
mysql> show tables;
mysql> select table_name, table_rows from tables;
注意:现在,如果您按向上箭头,您可以看到您之前在 mysql 提示符下输入的所有命令。
2. ~/.mysql_history 文件存储了mysql的历史
从 mysql 命令提示符退出并查看 ~/.mysql_history 文件,该文件将包含您从 mysql 命令提示符执行的所有 sql 命令。
$ cat ~/.mysql_history
select * from versions;
show databases;
use information_schema;
show tables;
select table_name, table_rows from tables;
3. 使用 MYSQL_HISTFILE 环境变量禁用 mysql 历史记录
首先,删除 ~/.mysql_history 文件
$ rm ~/.mysql_history
接下来,将MYSQL_HISTFILE 环境变量设置为 /dev/null
$ export MYSQL_HISTFILE=/dev/null
$ set | grep MYSQ
MYSQL_HISTFILE=/dev/null
现在,登录到 mysql 并执行一些 sql 命令。你会注意到 ~/.mysql_history 文件不再被创建。
$ mysql -u root -pyour-password
mysql> show databases;
mysql> use information_schema;
mysql> show tables;
mysql> select table_name, table_rows from tables;
$ cat ~/.mysql_history
cat: /home/ramesh/.mysql_history: No such file or directory
4. 通过将 .mysql_history 指向 /dev/null 来禁用 mysql 历史记录
首先,删除 ~/.mysql_history 文件
$ rm ~/.mysql_history
接下来,创建一个 ~/.mysql_history 指向 /dev/null 的符号链接,如下所示。
$ ln -s /dev/null ~/.mysql_history
$ ls -l .mysql_history
lrwxrwxrwx 1 ramesh admin 9 Dec 26 19:18 /home/ramesh/.mysql_history -> /dev/null
现在,登录到 mysql 并执行一些 sql 命令。您会注意到 ~/.mysql_history 文件是空的,并且不存储任何以前键入的命令。
$ mysql -u root -pyour-password
mysql> show databases;
mysql> use information_schema;
mysql> show tables;
mysql> select table_name, table_rows from tables;
$ cat ~/.mysql_history
$
- 点赞
- 收藏
- 关注作者
评论(0)