web-dev-qa-db-ja.com

psqlクライアントの履歴はどこに保存されますか? (〜/ .psql_historyが存在しません!)

パスワードはpsqlプロンプトに表示されます(上矢印を押して、以前に入力したコマンドを表示します)。そのため、psqlクライアントからそのエントリを削除したいと思います。

他のリソース( 12 )は、psqlクライアントの履歴が~/.psql_historyファイルであると主張していますが、このファイルは単に存在しません。 (.bash_historyにもありません)

psql Promptの履歴が保存されている別のファイルが必要です、何かアイデアはありますか?

注:私はUbuntu 12.04に取り組んでいます

32
Bentley4

使用する場合:

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
40

ファイル名は、HISTFILEという名前の内部変数によって指定されます。技術的には~/.psql_history.である必要はありません

別の設定については、~/.psqlrcファイルを確認してください。たとえば、次のようになります。

\ set HISTFILE〜/ .psql_history-:DBNAME

手動 データベースごとの履歴ファイルで述べたように。

11
Daniel Vérité

ここにはpostgresホームフォルダーのないサーバー(Amazon Linux AMI、Centosなど)があります。それでも、psqlの歴史を覚えています。 locateコマンドを使用して、/var/lib/pgsql93/.psql_historyにある履歴ファイルを見つけました。別のマシンでは、/var/lib/pgsql/にあります。このファイルを編集し、関連するすべての行を削除すると、履歴はなくなりました。

Locateコマンドが結果を返さない場合、updatedbコマンドを使用して、locateコマンド用のデータベースを作成します。これらのコマンドをユーザーpostgres btwとして実行することはできません。

0
SPRBRN

/ etc/passwdを変更する必要があります。 pgsqlフォルダーの場所をpostgres行に入れて試してください:grep postgres/etc/passwd | cut -d ':' -f 6

0
melocoton