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



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

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

所以必须有另一个文件保存psql提示的历史,有什么想法吗

我这样登录到我的提示sudo -u postgres psql my_db

注意:我正在处理Ubuntu 12.04

使用时:

sudo -u postgres psql my_db

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

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

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

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

检查~/.psqlrc文件中的备用设置。例如:

\设置HISTFILE~/.psql_history-:DBNAME

如手册中针对每个数据库的历史文件所述。

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

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

您需要修改/etc/passwd。将您的pgsql文件夹的位置放在postgres行,然后尝试:grep-postgres/etc/passwd |剪切-d':'-f 6

其他一些答案已经暗示了这一点,并提到了在postgres用户没有主目录(即没有/home/postgres/)的情况下,如何查找.psql_history文件的保存位置,但他们没有提到默认位置是什么。

为了节省查看目录引用的时间,您的.psql_history文件(以及postgres用户的.bash_history文件)可以在var/lib/postgresql/ 上找到

还要注意,如果您使用ls检查此目录以包含-a标志,因为它们仍然是隐藏文件。

对于docker postgres容器,您可能以root身份登录。因此,您应该在/root中查找.psql_history。

(要看到它,你需要ls-a):

ls -la /root/

您可能需要安装一个文本编辑器。根据您的发行版使用yum、apk或apt等。

如果你不确定你在哪个发行版:

cat /etc/os-release

最新更新