Saya ingin mendapatkan path ke pg_hba.conf dari shell. Path bervariasi antara versi PostgreSQL. Misalnya, untuk 8.4 dan 9.1:
/etc/postgresql/8.4/main/pg_hba.conf
/etc/postgresql/9.1/main/pg_hba.conf
Saya sudah mencoba pg_config
perintah itu, tetapi sepertinya tidak memasukkan informasi ini.
Ini agar saya dapat menggunakan perintah yang seragam untuk membuka pg_hba.conf
dan file konfigurasi PostgreSQL lainnya untuk diedit.
Saya menggunakan bash.
postgresql
Roger Dahl
sumber
sumber
find / -name pg_hba.conf -amin -5
(jika server telah di-restart dalam 5 menit terakhir; cukup mudah untuk mengubahnya-atime
jika itu terakhir kali di-restart lagi). Atau Anda dapat memfilter menurut waktu akses yang lebih baru daripada mengubah waktu atau salah satu dari yang lain menemukan opsi berbasis waktu ... (Meskipun pemfilteranlsof | grep pg_hba.conf
saat menjalankan server tidak bekerja).Jawaban:
pg_config
adalah untuk informasi pelengkap, untuk membantu ekstensi dan program klien menyusun dan menautkannya dengan PostgreSQL. Ia tidak tahu apa-apa tentang instance PostgreSQL aktif pada mesin, hanya binari-binari.pg_hba.conf
dapat muncul di banyak tempat lain tergantung pada bagaimana Pg dipasang. Lokasi standarpg_hba.conf
dalamdata_directory
database (yang bisa di/home
,/var/lib/pgsql
,/var/lib/postgresql/[version]/
,/opt/postgres/
, dll dll dll) namun pengguna dan pembuat paket bisa menempatkannya di mana pun mereka suka. Sayangnya.Satu-satunya cara yang valid temukan
pg_hba.conf
adalah dengan menanyakan contoh PostgreSQL yang sedang berjalan di mana tempatnyapg_hba.conf
, atau bertanya pada sysadmin di mana tempatnya. Anda bahkan tidak bisa mengandalkan bertanya di mana datadir berada dan parsingpostgresql.conf
karena skrip init mungkin melewati param seperti-c hba_file=/some/other/path
ketika memulai Pg.Yang ingin Anda lakukan adalah bertanya pada PostgreSQL:
Perintah ini harus dijalankan pada sesi pengguna super, jadi untuk skrip shell Anda dapat menulis sesuatu seperti:
dan mengatur variabel lingkungan
PGUSER
,PGDATABASE
dll untuk memastikan bahwa koneksi yang tepat.Ya, ini agak masalah ayam dan telur, karena jika pengguna tidak dapat terhubung (katakanlah, setelah mengacaukan pengeditan
pg_hba.conf
), Anda tidak dapat menemukannyapg_hba.conf
untuk memperbaikinya.Pilihan lain adalah untuk melihat
ps
output perintah dan melihat apakah argumen direktori data postmaster-D
terlihat di sana, misalnyakarena
pg_hba.conf
akan berada di dalam direktori data (kecuali Anda berada di Debian / Ubuntu atau turunan dan menggunakan paket mereka).Jika Anda menargetkan secara khusus sistem Ubuntu dengan PostgreSQL terinstal dari paket Debian / Ubuntu, itu akan menjadi sedikit lebih mudah. Anda tidak harus berurusan dengan Pg yang dikompilasi dengan tangan dari sumber yang
initdb
da datadir seseorang di dir rumah mereka, atau instal EnterpriseDB Pg di / opt, dll. Anda dapat bertanyapg_wrapper
, Pg multi-versi Debian / Ubuntu multi-versi manajer, di mana PostgreSQL menggunakan satupg_lsclusters
perintah daripg_wrapper
.Jika Anda tidak dapat terhubung (Pg tidak berjalan, atau Anda perlu mengedit
pg_hba.conf
untuk menghubungkan) Anda harus mencaripg_hba.conf
file dari sistem . Di Mac dan Linux sesuatu sepertisudo find / -type f -name pg_hba.conf
akan dilakukan. Kemudian periksaPG_VERSION
file di direktori yang sama untuk memastikan itu adalah versi PostgreSQL yang tepat jika Anda memiliki lebih dari satu. (Jikapg_hba.conf
dalam/etc
/, abaikan ini, itu adalah nama direktori induknya). Jika Anda memiliki lebih dari satu direktori data untuk versi PostgreSQL yang sama, Anda harus melihat ukuran basis data, periksa baris perintah postgres yang berjalanps
untuk melihat apakah-D
argumen direktori data cocok dengan tempat Anda mengedit, dll.sumber
psql: invalid port number: "format=unaligned"
ketika saya menjalankan perintah psql itu.-P
tidak-p
. Tetap.Beginilah cara saya melakukannya:
Karena jalannya seperti ini:
/etc/postgresql/[VERSION]/main/pg_hba.conf
sumber
Saya menggunakan yang berikut ini untuk deteksi file konfigurasi:
sumber
Mengedit yang benar
pg_hba.conf
dengan editor visual default Anda (vim, emacs, nano, joe, dll.) Semudah:$VISUAL /etc/postgresql/$(ls /etc/postgresql)/main/pg_hba.conf
sumber
Tanyakan database Anda:
sumber
Untuk mengetahui di mana file itu cukup ketik:
sumber