it-swarm-eu.dev

Jak používat psql bez výzvy k zadání hesla?

Napsal jsem skript do indexů REINDEX v databázi. Zde je jeden z nich:

echo -e "\nreindex for unq_vbvdata_vehicle started at: `date "+%F %T"`" >> ${LOG_FILE}
psql -U ${USERNAME} -h ${HOSTNAME} -d ${DBNAME} -c "REINDEX INDEX scm_main.unq_vbvdata_vehicle;"
if [[ ${?} -eq 0 ]]; then
    echo "reindex for unq_vbvdata_vehicle finished at: `date "+%F %T"`" >> ${LOG_FILE}
else
    echo "reindex for unq_vbvdata_vehicle failed" >> ${LOG_FILE}
    exit 1
fi

Problém je, že tento skript nelze spustit v samostatném režimu. psql vyžaduje heslo při každém spuštění. Existují také dvě omezení:

  1. Nemohu vytvořit uživatele v databázi bez hesla.

  2. Protože REINDEX uzamkne tabulky, měl bych použít sleep <num> mezi každým REINDEX.

Existuje nějaké automatické řešení?

83
Majid Azimi

Máte čtyři možnosti týkající se hesla Výzva:

  1. nastavte proměnnou prostředí PGPASSWORD. Podrobnosti viz příručka:
    http://www.postgresql.org/docs/current/static/libpq-envars.html
  2. použijte heslo .grpass pro uložení hesla. Podrobnosti viz příručka:
    http://www.postgresql.org/docs/current/static/libpq-pgpass.html
  3. používat „trust trust“ pro tohoto konkrétního uživatele:
    http://www.postgresql.org/docs/current/static/auth-methods.html#AUTH-TRUST
  4. použít URI připojení, které obsahuje vše:
    http://www.postgresql.org/docs/current/static/libpq-connect.html#AEN42532
127

Jednoduchý příklad s PGPASSWORD bude něco jako:

PGPASSWORD=YOUR_PASSRORD psql -h YOUR_PG_Host -U YOUR_USER_NAME

Doufám, že to pomůže.

22
pdm

V závislosti na oprávnění vašeho účtu může dojít k selhání příkladu bez zadání databáze, protože uživatelská oprávnění se porovnávají s databází, ke které se připojujete. Je také lepší explicitně specifikovat databázi.

# this can fail.
PGPASSWORD=YOUR_PASSRORD psql -h YOUR_PG_Host -U YOUR_USER_NAME    

# this is more likely to work, assuming given account has permissions to that database.
PGPASSWORD=YOUR_PASSRORD psql -h YOUR_PG_Host -U YOUR_USER_NAME -d YOUR_DATABASE  
2
mtoonen

Velmi užitečné odpovědi v tomto vlákně. Jen přidávám toto pro Ubuntu 18.04:

Sudo PGPASSWORD=yourpasswordHere -u postgres psql

Tím se dostanete do postgresu bez hesla Prompt, aniž byste museli nastavovat žádné proměnné prostředí. Toto není trvalé nastavení.

0
Dhiraj