2010-12-01 10 views
27

मेरे पास सभी अपडेट और पोस्टग्रेस्क्ल 8.4
के साथ एक नया ubuntu 10.10 इंस्टॉल है postgresql को लॉगिन + पासवर्ड कनेक्शन स्वीकार करने के लिए मैंने इसे कॉन्फ़िगर किया है:Postgresql को कॉन्फ़िगर कैसे करें ताकि यह लॉगिन + पासवर्ड ऑथ स्वीकार कर सके?

sudo su postgres 
psql 
ALTER USER postgres WITH PASSWORD 'password'; 
CREATE DATABASE myapp; 
\q 
exit 
sudo vi /etc/postgresql/8.4/main/pg_hba.conf 
change "local all all indent" to "local all all trust" 

लेकिन, आश्चर्य की बात है, यह काम नहीं कर रहा है! आदेश

psql -U postgres password 

त्रुटि के साथ मूल्यांकन करता है:

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

कोई संकेत देता है कि मैं psql -U कैसे काम कर सकता हूं?

उत्तर

35

शायद "पोस्टग्रेस" उपयोगकर्ता को पहचान प्रमाणीकरण के साथ छोड़ना अच्छा विचार है। डिफ़ॉल्ट रूप से मेरा मानना ​​है कि उबंटू अपग्रेड, बैकअप इत्यादि करने के लिए "पोस्टग्रेस" उपयोगकर्ता का उपयोग करता है, और इसके लिए यह आवश्यक है कि वह निर्दिष्ट पासवर्ड के बिना लॉगिन कर सके।

मैं एक अन्य उपयोगकर्ता (संभवतः अपने उपयोगकर्ता नाम के साथ) बनाने और इसे व्यवस्थापकीय विशेषाधिकार देने की सलाह देता हूं। फिर आप स्थानीय उपयोगकर्ता पर पासवर्ड के साथ उस उपयोगकर्ता का उपयोग कर सकते हैं।

# allow postgres user to use "ident" authentication on Unix sockets 
# (as per recent comments, omit "sameuser" if on postgres 8.4 or later) 
local all postgres       ident sameuser 
# allow all other users to use "md5" authentication on Unix sockets 
local all all        md5 
# for users connected via local IPv4 or IPv6 connections, always require md5 
host all all  127.0.0.1/32   md5 
host all all  ::1/128    md5 

भी ध्यान रखें कि psql -U postgres password आप क्या चाहते हैं काम नहीं चलेगा:

यहाँ क्या मेरी pg_hba.conf के प्रासंगिक भागों की तरह लग रही है। कमांडलाइन पर पासवर्ड कभी निर्दिष्ट नहीं किया जाना चाहिए। वह "पासवर्ड" नामक डेटाबेस में उपयोगकर्ता "पोस्टग्रेस" के रूप में लॉगिन करने का प्रयास करेगा।

आपको इसके बजाय psql -U postgres myapp का उपयोग करना चाहिए। Postgres स्वचालित रूप से आपको पासवर्ड के लिए संकेत देगा, अगर यह एक की आवश्यकता के लिए ठीक से कॉन्फ़िगर किया गया है।

+0

व्यवस्थापक विशेषाधिकारों के साथ नए उपयोगकर्ता को जोड़ने का सही तरीका क्या है? – grigoryvp

+0

"पासवर्ड उपयोगकर्ता पासवर्ड के साथ उपयोगकर्ता पुसर बनाएं" और "psql -U पुसर" करने के साथ उपयोगकर्ता को जोड़ना "psql: FATAL: डेटाबेस" पुसर "मौजूद नहीं है" – grigoryvp

+1

'createuser' कमांडलाइन का उपयोग करना आम तौर पर आसान होता है एसक्यूएल के साथ उपयोगकर्ता बनाने के बजाय उपयोगिता। इसमें उपयोगकर्ता को व्यवस्थापक बनाने के विकल्प हैं। साथ ही, यदि यह आपको बता रहा है कि डेटाबेस मौजूद नहीं है, तो लॉगिन सफल रहा था। डिफ़ॉल्ट रूप से, पोस्टग्रेस उपयोगकर्ता के "होम" डेटाबेस में लॉगिन करने का प्रयास करता है, जिसका उपयोगकर्ता के समान नाम होगा। या तो "पुसर" डेटाबेस बनाएं, या "myapp" में लॉगिन करने के लिए 'psql -U puser myapp' आज़माएं। – cecilkorik

2

मुझे लगता है कि आपकी pg_ident.conf फ़ाइल गलत कॉन्फ़िगर किया गया है। साथ ही, आपने

psql -U postgres -W 
+0

वही त्रुटि (15 वर्ण) – grigoryvp

0

एक और चीज जो इसका कारण बन सकती है, समाप्त हो चुकी है। मुझे नहीं लगता कि यह संस्करण 8 में हुआ था, लेकिन संस्करण 9 में जब आप pgadmin में एक नई भूमिका बनाते हैं, तो यह एक कालबाह्य स्थिति में बनाया जाता है और आपको भूमिका के साथ लॉगिन करने में सक्षम होने से पहले भूमिका की समाप्ति तिथि को बदलने या साफ़ करने की आवश्यकता होती है यह।

संबंधित मुद्दे

 संबंधित मुद्दे