在我的psql提示符中可以看到密码(通过向上推箭头查看以前输入的命令)。所以我想从psql客户端删除该条目。
其他资源(1,2)声称psql客户端历史记录保存在~/.psql_history
文件中,但此文件根本就不存在。 (它不在.bash_history
)
所以必须有另一个文件,其中保存psql提示的历史记录,任何想法在哪里?
注意:我正在处理Ubuntu 12.04
答案 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/
标志,因为它们仍然是隐藏文件。