psql客户端历史记录保存在哪里? (〜/ .psql_history不存在!)

时间:2013-07-29 13:06:21

标签: postgresql psql

在我的psql提示符中可以看到密码(通过向上推箭头查看以前输入的命令)。所以我想从psql客户端删除该条目。

其他资源(12)声称psql客户端历史记录保存在~/.psql_history文件中,但此文件根本就不存在。 (它不在.bash_history

所以必须有另一个文件,其中保存psql提示的历史记录,任何想法在哪里?

注意:我正在处理Ubuntu 12.04

5 个答案:

答案 0 :(得分:39)

使用时:

sudo -u postgres psql my_db

您运行psql作为(Linux)用户postgres,因此.psql_history文件位于postgres用户的主目录中(例如/home/postgres/.psql_history),而不是在主目录中您最初使用的用户。

在某些安装中,postgres用户主目录的位置为/var/lib/postgresql。您可以通过运行来检查:

grep postgres /etc/passwd | cut -d ':' -f 6

答案 1 :(得分:11)

文件名由名为HISTFILE的内部变量给出。 从技术上讲,它不一定是~/.psql_history.

检查~/.psqlrc文件以获取备用设置。例如,它可能是:

  

\ set HISTFILE~ / .psql_history-:DBNAME

,如manual中提到的每个数据库历史记录文件。

答案 2 :(得分:0)

我这里有一台服务器(Amazon Linux AMI,Centos之类),没有postgres主文件夹。它还记得psql的历史。使用locate命令,我找到了/var/lib/pgsql93/.psql_history中的历史文件。在另一台机器上它位于/var/lib/pgsql/。编辑此文件后,删除所有相关的行,历史记录就消失了。

如果locate命令未返回结果,请使用命令updatedb为locate命令创建数据库。您不能以用户postgres btw运行这些命令。

答案 3 :(得分:0)

您需要修改/ etc / passwd。 将pgsql文件夹的位置放在postgres行上并尝试: grep postgres / etc / passwd | cut -d':' - f 6

答案 4 :(得分:0)

其他一些答案暗示了这一点,并提到了在您的postgres用户没有主目录(即您没有{{ 1}}),但他们没有提及默认位置。

要节省查看目录引用的时间,可以在.psql_history上找到您的/home/postgres/文件(以及postgres用户的.psql_history文件)

还请注意,如果您使用.bash_history检查此目录是否包含var/lib/postgresql/标志,因为它们仍然是隐藏文件。