47

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

其他资源(1、2 声称psql 客户端历史记录保存在一个文件中,但是这个文件根本不存在。(两者都没有)~/.psql_history.bash_history

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

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

注意:我正在研究Ubuntu 12.04

4

5 回答 5

60

当您使用:

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
于 2013-07-29T14:24:22.243 回答
13

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

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

\set HISTFILE ~/.psql_history- :DBNAME

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

于 2013-07-29T13:20:46.163 回答
0

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

当定位命令没有返回结果时,使用该命令updatedb为定位命令创建数据库。顺便说一句,您不能以用户 postgres 的身份运行这些命令。

于 2015-02-09T14:25:13.753 回答
0

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

于 2018-03-22T14:16:54.903 回答
0

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

为了节省查看目录引用的时间,您的.psql_history文件(和.bash_historypostgres 用户的文件)可以在以下位置找到var/lib/postgresql/

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

于 2020-10-30T16:20:56.993 回答