। postgreSQL के साथ काम नहीं कर रहा है


13

मैंने एक .pgpass file को /folder/.pgpass में डाला है और यह इस तरह दिखता है

*:*:*:postgres:password_for_postgres

मेरे पास एक bash स्क्रिप्ट है जहाँ मैं postgreSQL से डेटाबेस का बैकअप लेता हूँ:

#!/bin/bash
export PGPASSFILE=/folder/.pgpass
echo $PGPASSFILE
pg_dump --username=postgres --format=c --file=/backup/db/db.sqlc database

हालांकि, स्क्रिप्ट अभी भी मुझे पासवर्ड के लिए प्रेरित करती है। PGPASSFILE का मूल्य उतना ही होना चाहिए जितना कि मैं देख सकता हूं। समस्या क्या हो सकती है इस पर कोई संकेत?

/क

जवाबों:


8

क्या pgpass फ़ाइल 0600 मोड पर सेट है (यानी केवल स्वामी द्वारा पढ़ा / लिखा गया है)? यदि यह समूह- या विश्व-पठनीय है, तो क्लाइंट लाइब्रेरी इसे अनदेखा कर देगा।


5

अपने कॉन्फ़िगरेशन ( Ubuntu 10.04.3और PostgreSQL 8.4) पर, मैं अंत में इसे काम करने के लिए प्राप्त कर सकता हूं जब मैं जिस उपयोगकर्ता नाम से लॉग इन करता हूं वह उसी तरह होता है जैसे मैं उस .pgpassफ़ाइल के लिए पासवर्ड प्राप्त करने की कोशिश कर रहा हूं ।

लॉग इन के रूप में deployer, मैं .pgpassएक उपयोगकर्ता नाम के स्वामित्व वाले डेटाबेस तक पहुंचने के लिए फ़ाइल का उपयोग करने की कोशिश कर रहा था appname, जिसमें कोई यूनिक्स उपयोगकर्ता समकक्ष नहीं है। मैं .pgpassकाम नहीं कर सका , जब तक कि मैंने deployerअपने डेटाबेस तक पहुंचने के लिए उपयोगकर्ता के रूप में उपयोग करना शुरू नहीं किया ...

यहाँ मेरी /home/deployer/.pgpassफ़ाइल सामग्री है:

*:*:*:deployer:password

यहाँ एक हिस्सा है /etc/postgresql/8.4/main/pg_hba.conf:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD                                                

# "local" is for Unix domain socket connections only                                                        
local   all         all                               md5                                                   
# IPv4 local connections:                                                                                   
host    all         all         127.0.0.1/32          md5                                                   
host    all         all         192.168.0.1/32        md5                                                   
# IPv6 local connections:                                                                                   
host    all         all         ::1/128               md5 

जैसा कि आप देख सकते हैं, मेरे सभी कनेक्शनों को पासवर्ड ( md5) की आवश्यकता होती है ।

इस कॉन्फ़िगरेशन के साथ, यह मानते हुए कि मेरे पास एक डेटाबेस है जिसे मैंने इस कमांड के साथ बनाया है:

deployer@ubuntu-server:~$ createdb -T template0 -O deployer -E UTF8 dbname

मैं पासवर्ड दर्ज किए बिना निम्नलिखित ऑपरेशन करने में सक्षम हूं:

deployer@ubuntu-server:~$ dropdb dbname

जैसे ही मैं अपने का नाम बदलने के रूप में .pgpassकरने के लिए .pgpass-no, यह एक पासवर्ड की आवश्यकता होगी।

BTW, यह मत भूलो कि आपकी .pgpassफ़ाइल 0600अनुमतियों के तहत होनी चाहिए :

deployer@ubuntu-server:~$ ls -la .pgpass
-rw------- 1 deployer staff 24 2012-01-06 17:29 .pgpass

2
आप का उपयोग कर के रूप में कनेक्ट करने के लिए स्नातकोत्तर उपयोगकर्ता नियंत्रित कर सकते हैं -Uकरने के लिए ध्वज dropdbऔरcreatedb
केविन हॉर्न

0

1) सामग्री के साथ .pg पार फ़ाइल बनाएँ

मेजबान: 5432: somedb: someuser: somepass

2) कमांड का उपयोग करके अनुमतियाँ सेट करें

सुडो चामोद ६०० .pgpass

3) फ़ाइल मालिक को उसी उपयोगकर्ता के रूप में सेट करें जिसके उपयोग से आपने लॉग इन किया था:

sudo chown login_username: login_username .pgpass

4) सेट PGPASSFILE पर्यावरण चर:

निर्यात PGPASSFILE = '/ घर / उपयोगकर्ता / .pg'

अब डेटाबेस से कनेक्ट करके जांचें:

psql -h host -U someuser किसी दिन

मैं पासवर्ड के लिए संकेत नहीं दूंगा और पोस्टग्रेजल में लॉग इन करूंगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.