pg_config, uyumluluk bilgileri, uzantıların ve istemci programlarının PostgreSQL ile derlenmesine ve bağlantı kurmasına yardımcı olmak içindir. Makinedeki etkin PostgreSQL örnekleri ile ilgili hiçbir şey bilmiyor, sadece ikili dosyalar.
pg_hba.conf, Pg'nin nasıl kurulduğuna bağlı olarak başka birçok yerde görünebilir. Standart konum, veritabanının data_dizini içinde pg_hba.conf'dur (/ home, / var / lib / pgsql, / var / lib / postgresql / [sürüm] /, / opt / postgres / vb. Vb. Olabilir) ancak kullanıcılar ve paketleyiciler istedikleri yere koyabilirler. Ne yazık ki.
Pg_hba.conf dosyasını bulmanın tek geçerli yolu, çalışan bir PostgreSQL örneğine pg_hba.conf'un nerede olduğunu sormak veya sysadmin'e nerede olduğunu sormaktır. Init betiği Pg başlatılırken -c hba_file = / some / other / path gibi bir param iletebileceğinden, datadir'in nerede olduğunu sormaya ve postgresql.conf dosyasını ayrıştırmaya bile güvenemezsiniz.
Yapmak istediğiniz şey PostgreSQL'e sormak:
SHOW hba_file;
Bu komut bir süper kullanıcı oturumunda çalıştırılmalıdır, bu nedenle kabuk komut dosyası oluşturmak için şöyle bir şey yazabilirsiniz:
psql -t -P format=unaligned -c 'show hba_file';
ve bağlantının doğru olduğundan emin olmak için PGUSER, PGDATABASE, vb. ortam değişkenlerini ayarlayın.
Evet, bu biraz tavuk ve yumurta sorunudur, eğer kullanıcı bağlanamazsa (diyelim ki pg_hba.conf düzenlemesini bozduktan sonra) düzeltmek için pg_hba.conf'u bulamazsınız.
Başka bir seçenek ps komutunun çıktısına bakmak ve postmaster veri dizini bağımsız değişkeni -D'nin orada görünür olup olmadığını görmek, ör.
ps aux | grep 'postgres *-D'
pg_hba.conf veri dizininin içinde olacağından (Debian / Ubuntu veya bazı türevlerde değilseniz ve paketlerini kullanmıyorsanız).
Debian / Ubuntu paketlerinden kurulu PostgreSQL ile özellikle Ubuntu sistemlerini hedefliyorsanız, biraz daha kolaylaşır. Birinin kendi dizininde bir veri dizini başlattığı kaynaktan derlenmiş Pg ile veya / opt vb. Bir EnterpriseDB Pg yüklemesi ile uğraşmanız gerekmez. Pg_wrapper, Debian / Ubuntu multi -version Pg yöneticisi; burada PostgreSQL, pg_wrapper'dan pg_lsclusters komutunu kullanır.
Bağlanamıyorsanız (Pg çalışmıyorsa veya bağlanmak için pg_hba.conf dosyasını düzenlemeniz gerekiyor), sistemde pg_hba.conf dosyaları aramalısınız. Mac ve Linux'ta sudo find / -type f -name pg_hba.conf gibi bir şey yapacaktır. Daha sonra, aynı dizindeki PG_VERSION dosyasını kontrol edin, birden fazla dosya varsa doğru PostgreSQL sürümü olduğundan emin olun. (Pg_hba.conf / etc / dizinindeyse, bunu dikkate almayın, bunun yerine üst dizin adıdır). Aynı PostgreSQL sürümü için birden fazla veri dizininiz varsa, veritabanı boyutuna bakmanız, veri dizini -D bağımsız değişkeninin düzenlediğiniz yerle eşleşip eşleşmediğini görmek için ps'den çalışan postgres komut satırını kontrol etmeniz gerekir. .
/ubuntu/256534/how-do-i-find-the-path-to-pg-hba-conf-from-the-shell/256711