密码在我的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