web-dev-qa-db-fra.com

Où l'historique de clients psql est-il conservé? (~/.psql_history non-existant!)

Un mot de passe est visible dans mon invite psql (en appuyant sur la flèche vers le haut pour afficher les commandes entrées précédemment). Je voudrais donc supprimer cette entrée du client psql. 

D'autres ressources ( 1 , 2 ) affirment que l'historique du client psql est conservé est un fichier ~/.psql_history, mais ce fichier n'y est tout simplement pas. (ce n'est pas dans .bash_history non plus)

Donc il doit y avoir un autre fichier où l’historique de psql Prompt est conservé, des idées où?

Note: je travaille sur Ubuntu 12.04

28
Bentley4

Quand vous utilisez:

Sudo -u postgres psql my_db

vous exécutez psql en tant qu'utilisateur (Linux) postgres; le fichier .psql_history se trouve donc dans le répertoire de base de l'utilisateur postgres (par exemple, /home/postgres/.psql_history) et non dans le répertoire de base de l'utilisateur avec lequel vous vous êtes connecté.

Dans certaines installations, l'emplacement du répertoire de base de l'utilisateur postgres est /var/lib/postgresql. Vous pouvez vérifier cela en exécutant:

grep postgres /etc/passwd | cut -d ':' -f 6
37

Le nom de fichier est donné par une variable interne nommée HISTFILE. Techniquement, il n'est pas nécessaire que ce soit ~/.psql_history.

Recherchez dans le fichier ~/.psqlrc un autre paramètre. Par exemple, cela pourrait être:

\ set HISTFILE ~/.psql_history-: DBNAME

comme indiqué dans manual pour un fichier d'historique par base de données.

9
Daniel Vérité

J'ai un serveur ici (AMI Amazon Linux, Centos like) qui n'a pas de dossier personnel Postgres. Pourtant, il se souvient de l'histoire de psql. En utilisant la commande locate, j'ai trouvé le fichier d'historique situé dans /var/lib/pgsql93/.psql_history. Sur une autre machine, c'est en /var/lib/pgsql/. Après l'édition de ce fichier, en supprimant toutes les lignes pertinentes, l'historique était parti.

Lorsque la commande de localisation ne renvoie pas de résultats, utilisez la commande updatedb pour créer la base de données de la commande de localisation. Vous ne pouvez pas exécuter ces commandes en tant qu'utilisateur postgres btw. 

0
SPRBRN

Vous devez modifier /etc/passwd. Indiquez l'emplacement de votre dossier pgsql sur la ligne postgres et essayez: Grep postgres/etc/passwd | cut -d ':' -f 6

0
melocoton