Createuser: डेटाबेस पोस्टर्स से कनेक्ट नहीं हो सका: FATAL: भूमिका "टॉम" मौजूद नहीं है


92

मैं पहली बार पोस्टग्रेज स्थापित करने की कोशिश कर रहा हूं, और मुझे डेटाबेस पढ़ने और बनाने के लिए अनुमतियों के साथ एक उपयोगकर्ता बनाने की आवश्यकता है। हालांकि, जब मैं उपयोग करता हूं:

createuser username

मेरे टर्मिनल में मुझे निम्न संदेश मिलता है:

createuser: डेटाबेस पोस्टग्रेट्स से कनेक्ट नहीं हो सका: FATAL: भूमिका "टॉम" मौजूद नहीं है

टॉम मेरा उबंटू उपयोगकर्ता खाता है जिसे मैंने अभी लॉगिन किया है। मैं "पोस्टग्रेज" का एक उपयोगकर्ता नाम बनाने की कोशिश कर रहा हूं, तो ऐसा psql -U psql template1करें कि मैं एक डेटाबेस बना सकता हूं और अपने रेल एप्लिकेशन के लिए इसे एक मालिक को सौंप सकता हूं।


क्या आप वास्तव में 'पोस्टग्रेज' उपयोगकर्ता बनाने की कोशिश कर रहे हैं? या अपने रेल एप्लिकेशन के लिए सिर्फ एक उपयोगकर्ता? आम तौर पर 'पोस्टग्रैज' उपयोगकर्ता पहले से ही मौजूद है और समस्या सिर्फ उसी से जुड़ रही है, जिसमें आपको जरूरत है।
ostergaard

जवाबों:


132

आपने उबंटू का उल्लेख किया है इसलिए मैं अनुमान लगाने जा रहा हूं कि आप उबंटू से पोस्टग्रेएसक्यूएल पैकेज को एप्ट के माध्यम से स्थापित करेंगे।

यदि ऐसा है, तो postgresPostgreSQL उपयोगकर्ता खाता पहले से मौजूद है और peerयूनिक्स सॉकेट के लिए प्रमाणीकरण के माध्यम से सुलभ होने के लिए कॉन्फ़िगर किया गया है pg_hba.conf। आप इसे postgresयूनिक्स उपयोगकर्ता के रूप में कमांड चलाकर प्राप्त करते हैं, जैसे:

sudo -u postgres createuser owning_user
sudo -u postgres createdb -O owning_user dbname

यह उबंटू पोस्टग्रैसक्यू प्रलेखन में सभी है जो "उबंटू पोस्टग्रेक्यूएल" के लिए पहला Google हिट है और यह कई स्टैक ओवरफ्लो प्रश्नों में शामिल है।

(आपने ओएस और संस्करण जैसे विवरणों का उत्तर देने के लिए इस प्रश्न को बहुत कठिन बना दिया है, आप कैसे हैं, आपने PostgreSQL कैसे स्थापित किया है, आदि)


owning_user बनाने के बाद, आप इस उपयोगकर्ता से कैसे जुड़ेंगे? मेरा मतलब है कि मैं डिफॉल्ट यूजर कनेक्ट का उपयोग करता हूं, sudo -u postgres psql postgres। उसी तरह से कनेक्ट करने के लिए कैसे?
जॉनी

2
तीन विकल्प। (ए) उस उपयोगकर्ता के लिए एक पासवर्ड सेट करें और उस उपयोगकर्ता के pg_hba.confलिए md5विशेषाधिकार का उपयोग करने के लिए संपादित करें (मैनुअल देखें); (बी) एक ही नाम से एक ओएस उपयोगकर्ता बनाएं और peerऑर्ट का उपयोग करते रहें ; या (c) अधिक उन्नत, pg_ident.confअपने OS उपयोगकर्ता को नए उपयोगकर्ता के रूप में लॉग इन करने की अनुमति देने के लिए एक मानचित्रण बनाएँ ।
क्रेग रिंगर

66

यहां निर्देशों के साथ गिट देखें

इसे चलाओ:

 sudo -u postgres psql

या

psql -U postgres

अपने टर्मिनल में पोस्टग्रेज में जाने के लिए

NB: यदि आप एक मैक पर हैं और ऊपर दिए गए दोनों कमांड नीचे मैक के अनुभाग में कूदने में विफल रहे हैं

postgres=#

Daud

CREATE USER new_username;

नोट: नए उपयोगकर्ता को उस उपयोगकर्ता के साथ बदलें जिसे आप बनाना चाहते हैं, आपके मामले में जो कि टॉम होगा।

postgres=# CREATE USER new_username;
CREATE ROLE

चूंकि आप चाहते हैं कि उपयोगकर्ता एक DB बनाने में सक्षम हो, इसलिए आपको सुपरयुसर की भूमिका को बदलने की आवश्यकता है

postgres=# ALTER USER new_username SUPERUSER CREATEDB;
ALTER ROLE

पुष्टि करने के लिए, सब कुछ सफल रहा,

postgres=# \du
                         List of roles
 Role name |                   Attributes                   | Member of 
-----------+------------------------------------------------+-----------
new_username     | Superuser, Create DB                           | {}
postgres         | Superuser, Create role, Create DB, Replication | {}
root             | Superuser, Create role, Create DB              | {}

postgres=# 

अद्यतन / संशोधन (मैक के लिए):

मैंने हाल ही में अपने मैक पर एक समान त्रुटि का सामना किया:

psql: FATAL: role "postgres" does not exist

ऐसा इसलिए था क्योंकि मेरा इंस्टॉलेशन एक डेटाबेस सुपरसुअर के साथ सेटअप किया गया था जिसकी भूमिका का नाम आपके लॉगिन (संक्षिप्त) नाम के समान है।

लेकिन कुछ लिनक्स स्क्रिप्ट मानती हैं कि सुपरयुसर की पारंपरिक भूमिका नाम है postgres

मैंने इसे कैसे हल किया?

यदि आप homebrewरन के साथ स्थापित हैं:

/usr/local/opt/postgres/bin/createuser -s postgres

यदि आप पोस्टग्रेज के किसी विशिष्ट संस्करण का उपयोग कर रहे हैं, 10.5तो कहें : चलाएं:

/usr/local/Cellar/postgresql/10.5/bin/createuser -s postgres

या:

/usr/local/Cellar/postgresql/10.5/bin/createuser -s new_username

या:

/usr/local/opt/postgresql@11/bin/createuser -s postgres

यदि आप postgres.appमैक रन के लिए स्थापित हैं:

/Applications/Postgres.app/Contents/Versions/10.5/bin/createuser -s postgres

PS: 10.5 को अपने PostgreSQL संस्करण के साथ बदलें


इसने पोस्टग्रेट्स में आने का काम किया:psql -U postgres
leontalbot

29
sudo -u postgres createuser -s tom 

यह आपकी मदद करेगा क्योंकि यह तब होगा जब व्यवस्थापक ने आपके लिए PostgreSQL उपयोगकर्ता खाता नहीं बनाया है। यह भी हो सकता है कि आपको एक PostgreSQL उपयोगकर्ता नाम सौंपा गया था जो आपके ऑपरेटिंग सिस्टम उपयोगकर्ता नाम से अलग है, उस स्थिति में आपको -U स्विच का उपयोग करने की आवश्यकता है।


7

1- डिफ़ॉल्ट PostgreSQL उपयोगकर्ता के रूप में लॉगिन करें (पोस्टग्रेज)

sudo -u postgres -i

2- जैसे ही यूजर पोस्टग्रेट करता है। createuserकमांड का उपयोग करके एक नया डेटाबेस उपयोगकर्ता जोड़ें

[postgres]$ createuser --interactive

3-बाहर निकलें

[postgres]$ exit

5

आपकी त्रुटि आधिकारिक दस्तावेज़ में पोस्ट की गई है। आप इस लेख को पढ़ सकते हैं

मैंने उस लेख से आपके लिए (और URL हाइपरलिंक किए गए) कारण की प्रतिलिपि बनाई है:

यह तब होगा जब व्यवस्थापक ने आपके लिए PostgreSQL उपयोगकर्ता खाता नहीं बनाया है। (PostgreSQL उपयोगकर्ता खाते ऑपरेटिंग सिस्टम उपयोगकर्ता खातों से अलग हैं।) यदि आप व्यवस्थापक हैं, तो अध्याय 20 देखें खाते बनाने में सहायता के लिए । आपको ऑपरेटिंग सिस्टम उपयोगकर्ता बनना होगा जिसके तहत पहला उपयोगकर्ता खाता बनाने के लिए PostgreSQL स्थापित किया गया था (आमतौर पर पोस्टग्रेज)। यह भी हो सकता है कि आपको एक PostgreSQL उपयोगकर्ता नाम सौंपा गया था जो आपके ऑपरेटिंग सिस्टम उपयोगकर्ता नाम से अलग है; उस स्थिति में आपको अपने PostgreSQL उपयोगकर्ता नाम को निर्दिष्ट करने के लिए -U स्विच का उपयोग करने या PGUSER वातावरण चर सेट करने की आवश्यकता है

अपने उद्देश्यों के लिए, आप कर सकते हैं:

1) एक PostgreSQL उपयोगकर्ता खाता बनाएँ:

sudo -u postgres createuser tom -d -P

( -Pपासवर्ड सेट करने का विकल्प; -dअपने यूज़रनेम 'टॉम' के लिए डेटाबेस के निर्माण की अनुमति देने का विकल्प। ध्यान दें कि 'टॉम' आपका ऑपरेटिंग सिस्टम यूज़रनेम है। इस तरह, आप बिना पोस्टग्रेक्यूएल कमांड को निष्पादित कर सकते हैं।sudo हैं।)

2) अब आप को createdbऔर PostgreSQL कमांड को निष्पादित करने में सक्षम होना चाहिए ।


1

मेरे पास एक ही मुद्दा था, मैं बस यही करता हूं

सुडो सु - पोस्टग्रेट्स

createuser odoo -U पासवर्ड के लिए #dRSP #P पोस्ट करता है ( odoo या उपयोगकर्ता नाम जिसे आप चाहते हैं कि o पोस्टग्रेज एक्सेस दे)



0

यदि आप प्रमाणीकरण विधि (पहचान) और गंदगी को pg_hba.conf के साथ बदलना नहीं चाहते हैं, तो इसका उपयोग करें:

पहले डिफ़ॉल्ट उपयोगकर्ता के रूप में लॉगिन करें

 sudo su - posgres

इसके बाद psql को एक्सेस करें और एक यूजर को उसी नाम से बनाएं जिसके साथ आप लॉगिन हैं

postgres=# CREATE USER userOS WITH PASSWORD 'garbage' CREATEDB;

आप अपने उपयोगकर्ता को संबंधित भूमिकाओं के साथ सत्यापित कर सकते हैं

postgres=#  \du

इसे सुरक्षित करें आप अपना डेटाबेस बना सकते हैं और इसे सत्यापित कर सकते हैं

psql -d dbName
\l
\q

-4

आपको पहले आईटीडीबी चलाने की जरूरत है। यह डेटाबेस क्लस्टर और प्रारंभिक सेटअप बनाएगा

पहली बार पोस्टग्रेजल को कैसे कॉन्फ़िगर करें देखें ? ( http://www.postgresql.org/docs/8.4/static/app-initdb.html


5
यह पूरी तरह से गलत है। यदि उपयोगकर्ता नहीं चला था, initdbतो उनके पास डेटाबेस सर्वर नहीं चल रहा होगा और रिपोर्ट किए गए त्रुटि संदेश का उत्पादन करने के लिए कनेक्शन स्वीकार करना होगा। कृपया इस भ्रामक उत्तर को हटा दें। (BTW, भविष्य में, कृपया / डॉक्स / वर्तमान / स्थैतिक / लिंक को बासी लिंक से बचने के लिए लिंक करें)
क्रेग रिंगर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.