2013-07-29 11 views
21

Una password è visibile nel mio prompt di psql (premendo la freccia su per visualizzare i comandi immessi in precedenza). Quindi vorrei cancellare quella voce dal client psql.Dove è conservata la cronologia del client di psql? (~/.psql_history inesistente!)

Altre risorse (1, 2) affermano che la cronologia del client di psql è contenuta in un file ~/.psql_history, tuttavia questo file non è semplicemente lì. (non è neanche in

Quindi Deve esserci un altro file in cui è conservata la cronologia del prompt di psql, qualche idea dove?

Nota: Sto lavorando su Ubuntu 12.04

+0

Forse stai eseguendo psql come un altro utente? –

+0

Io non la penso così, nel caso, accedo al mio prompt come questo 'sudo -u postgres psql my_db' – Bentley4

+5

Questo è sicuramente l'esecuzione di psql come utente' postgres'. Quindi la storia è probabilmente memorizzata in '~ postgres/.psql_history'. – qqx

risposta

28

Quando si utilizza:

sudo -u postgres psql my_db 

si esegue psql come il (Linux) utente postgres, Perciò il file .psql_history si trova nella home directory dell'utente postgres (ad es /home/postgres/.psql_history), non nella directory home l'utente con cui hai effettuato l'accesso in origine.

In alcune installazioni, la posizione della directory home dell'utente postgres è /var/lib/postgresql. È possibile controllare questo eseguendo:

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

Come riferimento futuro: è possibile passare al nome utente 'postgres' facendo' sudo su postgres' e quindi fare 'cat ~/.psql_history'. Ma non hai nemmeno bisogno di cambiare utente se fai '~ postgresql' e premi scheda (espansione tilde), poi si espande in'/var/lib/postgresql/'. Il file '.psql_history' si trova anche nella seconda directory. – Bentley4

+0

La vera domanda è: perché il 'sudo 'del tutto? 'psql my_db postgres 'farà la stessa cosa. –

+0

Il motivo è che quando eseguo 'psql my_db postgres, ottengo:' psql: FATAL: autenticazione peer non riuscita per l'utente "postgres" ' – Bentley4

6

Il nome del file è dato da una variabile interna denominata HISTFILE. Tecnicamente non deve essere ~/.psql_history.

Controllare il file ~/.psqlrc per un'impostazione alternativa. Per esempio potrebbe essere:

\ set HISTFILE ~/.psql_history-: DBNAME

come menzionato nel manual per un file di storia per-database.

+1

Non ho alcun file '~/.psqlrc' (ha fatto' ls -a' in '~'). All'interno del prompt posso fare 'SHOW hba_file;' per trovare la posizione del file 'pg_hba.conf'. Esiste un comando equivalente per mostrare 'HISTFILE'?('SHOW hist_file;' o 'SHOW HISTFILE;' non funziona) – Bentley4

+0

Fa 'echo $ PSQL_HISTORY' mostra un percorso alternativo al tuo .psql_history? – bma

+1

Stampa semplicemente una riga vuota. Ma ho trovato la soluzione, vedi la risposta di qqx. – Bentley4

0

Ho un assistente qui (Amazon Linux AMI, CentOS simili) che non ha nessuna cartella Postgres casa. Ancora ricorda la storia di psql. Utilizzando il comando locate ho trovato il file di cronologia situato in /var/lib/pgsql93/.psql_history. Su un'altra macchina è in /var/lib/pgsql/. Dopo aver modificato questo file, rimuovendo tutte le righe pertinenti, la cronologia era sparita.

Quando il comando locate non restituisce risultati, utilizzare il comando updatedb per creare il database per il comando locate. Non è possibile eseguire questi comandi come utente postgres btw.

Problemi correlati