Bagaimana cara membuat psql ke default ke localhost?

10

Saya memiliki skenario berikut:

saji@geeklap:~$ psql -U postgres
psql: FATAL:  Ident authentication failed for user "postgres"

saji@geeklap:~$ psql -h localhost -U postgres
Password for user postgres: 
psql (8.4.14)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

postgres=# 

Saya mencoba masuk ke postgresqlserver yang diinstal di sistem saya sebagai pengguna postgres. Saya dapat masuk hanya jika saya menentukan -h localhost. Sedangkan psqldokumentasi mengatakan bahwa:

Jika Anda menghilangkan nama host, psql akan terhubung melalui soket domain Unix ke server di host lokal, atau melalui TCP / IP ke host lokal di mesin yang tidak memiliki soket domain Unix.

Ref: http://www.postgresql.org/docs/current/static/app-psql.html#R2-APP-PSQL-CON

Mengapa saya tidak dapat masuk tanpa menentukan host, apakah ada beberapa file konfigurasi yang memerlukan perubahan untuk hal-hal yang terjadi seperti yang diceritakan dalam psqldokumentasi?

disajikan89
sumber
Buat .psqlrcyang menentukan default - atau hanya mengedit pg_hba.confuntuk menggunakan md5otentikasi untuk localkoneksi (soket unix). Lihat dokumentasi untuk pg_hba.confdan psql.
Craig Ringer

Jawaban:

7

Bahkan, ini berfungsi seperti yang didokumentasikan.

Ketika nama host dihilangkan, psqlsambungkan ke soket Unix-domain yang jalurnya dikompilasi. Bagian itu berfungsi dalam kasus Anda, jika tidak maka akan menghasilkan pesan kesalahan yang berbeda dari apa yang ditampilkan pertanyaan.

Pesan kesalahan dalam pertanyaan:

psql: FATAL:  Ident authentication failed for user "postgres"

berkaitan dengan fakta bahwa hanya postgres pengguna Unix yang memiliki izin untuk terhubung sebagai postgres pengguna basis data saat menggunakan soket domain Unix. Ini dikonfigurasi dalam pg_hba.conffile.

apa yang biasanya Anda lakukan di Ubuntu ketika Anda masuk sebagai pengguna normal, tetapi Anda adalah administrator sistem:

$ sudo -u postgres psql
Daniel Vérité
sumber
1
Terima kasih .. Silakan ubah sudo -u postgresql psqlke sudo -u postgres psql. Saya mencoba mengedit. Tetapi tidak bisa, karena hasil edit hanya memiliki <6 karakter.
saji89
13

Jika Anda tidak suka koneksi standar melalui soket unix, Anda dapat mengatur variabel lingkungan PGHOST. saya sudah

export PGHOST="db"

di saya ~/.bashrc, untuk terhubung ke server dengan nama itu. Beberapa variabel lingkungan yang lebih berguna didokumentasikan di http://www.postgresql.org/docs/9.5/static/libpq-envars.html

Andrew
sumber