在我的 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)用户身份运行 psql postgres
,因此该.psql_history
文件位于 postgres 用户(例如/home/postgres/.psql_history
)的主目录中,而不是您最初登录的用户的主目录中。
在某些安装中,postgres
用户主目录的位置是/var/lib/postgresql
. 您可以通过运行检查这一点:
grep postgres /etc/passwd | cut -d ':' -f 6
文件名由名为 的内部变量给出 HISTFILE
。从技术上讲,它不一定是~/.psql_history.
检查~/.psqlrc
文件以获取替代设置。例如,它可能是:
\set HISTFILE ~/.psql_history- :DBNAME
如手册中针对每个数据库的历史文件所述。
我这里有一台没有 postgres 主文件夹的服务器(Amazon Linux AMI,Centos 之类的)。它仍然记得 psql 的历史。使用该locate
命令,我找到了位于/var/lib/pgsql93/.psql_history
. 在另一台机器上,它位于/var/lib/pgsql/
. 编辑此文件,删除所有相关行后,历史记录就消失了。
当定位命令没有返回结果时,使用该命令updatedb
为定位命令创建数据库。顺便说一句,您不能以用户 postgres 的身份运行这些命令。
您需要修改 /etc/passwd。将 pgsql 文件夹的位置放在 postgres 行并尝试: grep postgres /etc/passwd | 剪切 -d ':' -f 6
.psql_history
其他一些答案已经暗示了这一点,并提到了在您的 postgres 用户没有主目录(即您没有)的情况下如何查找文件的保存位置/home/postgres/
,但他们没有提到默认位置是。
为了节省查看目录引用的时间,您的.psql_history
文件(和.bash_history
postgres 用户的文件)可以在以下位置找到var/lib/postgresql/
另请注意,如果您ls
要检查此目录以包含-a
标志,因为它们仍然是隐藏文件。