PostgreSQL त्रुटि: घातक: भूमिका "उपयोगकर्ता नाम" मौजूद नहीं है


731

मैं अपना PostgreSQL 9.1 स्थापित कर रहा हूं। मैं PostgreSQL के साथ कुछ नहीं कर सकता: नहीं createdb, नहीं कर सकता createuser; सभी ऑपरेशन त्रुटि संदेश लौटाते हैं

Fatal: role h9uest does not exist

h9uestsudo apt-get installइस खाते के अंतर्गत मेरा खाता नाम है, और मैं पोस्टग्रेक्यूएल 9.1।
इसी तरह की त्रुटि rootखाते के लिए बनी रहती है ।


1
बाद में आप इसमें दौड़ सकते हैं FATAL: role "user" is not permitted to log in, इसके लिए dba.stackexchange.com/questions/57723/… चेक करें ।
kqw

19
मैंने इस सवाल का जवाब यहां दिया । इस ट्यूटोरियल को भी पढ़ें " उबंटू लिनक्स के लिए पोस्टग्रेज कैसे स्थापित करें "।
रज़ेन्हेक

@Ruzenhack कि ट्यूटोरियल लिंक वास्तव में मैं क्या जरूरत था! बहुत स्पष्ट और सरल
dwanderson

4
psql -h लोकलहोस्ट -U पोस्टग्रेट्स
मेटिन अटलै

आप त्रुटि मिलती है role doesn't existऔर त्रुटि can't create role, it already existsइस जवाब की जाँच: stackoverflow.com/a/56658832/1689770
जोनाथन

जवाबों:


773

अपने डेटाबेस को बनाने के लिए ऑपरेटिंग सिस्टम उपयोगकर्ता postgres का उपयोग करें - जब तक आप आवश्यक विशेषाधिकार के साथ एक डेटाबेस भूमिका सेट नहीं करते हैं जो आपके ऑपरेटिंग सिस्टम के उपयोगकर्ता नाम ( h9uestआपके मामले में) से मेल खाती है :

sudo -u postgres -i

जैसा कि यहाँ या यहाँ सुझाया गया है

फिर पुनः प्रयास करें। exitसिस्टम उपयोगकर्ता के रूप में ऑपरेटिंग के साथ किए जाने पर टाइप करें postgres

या फिर एक आदेश पर अमल createuserके रूप में postgresके साथ sudo, जैसे drees द्वारा प्रदर्शन एक और उत्तर में।

बिंदु ऑपरेटिंग सिस्टम उपयोगकर्ता का उपयोग करना है जो identप्रमाणीकरण के माध्यम से पहुंच प्रदान करने के लिए उसी नाम की डेटाबेस भूमिका से मेल खाता है । postgresडेटाबेस क्लस्टर आरंभ करने के लिए डिफ़ॉल्ट ऑपरेटिंग सिस्टम उपयोगकर्ता है। नियम पुस्तिका:

डेटाबेस सिस्टम को बूटस्ट्रैप करने के लिए, एक नए सिरे से आरंभिक प्रणाली में हमेशा एक पूर्वनिर्धारित भूमिका होती है। यह भूमिका हमेशा एक "सुपरसुसर" होती है, और डिफ़ॉल्ट रूप से (जब तक कि initdbइसे चलाते समय बदल नहीं जाती ) इसमें ऑपरेटिंग सिस्टम उपयोगकर्ता के समान नाम होगा जो डेटाबेस क्लस्टर को इनिशियलाइज़ करता है। पूरी तरह से, इस भूमिका को नाम दिया जाएगा postgres। अधिक भूमिकाएँ बनाने के लिए आपको पहले इस प्रारंभिक भूमिका के रूप में जुड़ना होगा।

मैंने गैर-मानक उपयोगकर्ता नामों के साथ विषम सेटअप के बारे में सुना है या जहां ऑपरेटिंग सिस्टम उपयोगकर्ता मौजूद नहीं है। आपको अपनी रणनीति को वहां अनुकूलित करना होगा।

मैनुअल में डेटाबेस भूमिकाओं और क्लाइंट प्रमाणीकरण के बारे में पढ़ें ।


1
sudo etcउपयोगकर्ता पोस्टग्रेज के रूप में चलाना असंभव है ... प्रोग्राम कैसे स्थापित करें? इस S2geometry स्थापना समस्या को देखें ।
पीटर क्रस

कॉन्फ़िगरेशन के आधार पर, किसी को बस आवश्यकता हो सकती है su postgres
फाबिएन स्नूवर्ट

1
sudo -u postgresकाम नहीं करता है, जबकि sudo -u postgres -iकाम करता है! -iझंडा क्या करता है?
13

1
@parsecer: एक इंटरेक्टिव शेल शुरू किया गया है su, लेकिन सूडो विशेषाधिकारों के आधार पर। देख लो man sudo
इरविन ब्रांडस्टेट्टर

284

कई अन्य लोगों के समाधानों की कोशिश करने के बाद, और सफलता के बिना, इस जवाब ने आखिरकार मेरी मदद की।

https://stackoverflow.com/a/16974197/2433309

संक्षेप में, चल रहा है

sudo -u postgres createuser owning_user

खुद के नाम के साथ एक भूमिका बनाता है_सर (इस मामले में, h9uest)। उसके बाद आप rake db:createटर्मिनल से चला सकते हैं जो भी खाता नाम आप पोस्टग्रेज के वातावरण में प्रवेश किए बिना सेट करते हैं।


29
यदि आपको इसके बाद "अपर्याप्त विशेषाधिकार" त्रुटि मिलती है, तो आप -s ध्वज को उपरोक्त आदेश में जोड़ सकते हैं। यह आपके नए उपयोगकर्ता को सुपरयुसर के रूप में बनाएगा। कृपया इस के सुरक्षा निहितार्थ से अवगत रहें, आपको इसे करने का निर्णय लेना चाहिए।
सिंक करें

1
मुझे "अपर्याप्त विशेषाधिकार" मिल रहे हैं, लेकिन अब मुझे ERROR: रोल "उपयोगकर्ता नाम" पहले से मौजूद है।
व्यालियम जुड

4
@ConnorLeech आप 'पोस्टग्रेज' को अपने पीजी सुपर यूजर के नाम से बदल सकते हैं। मेरे मामले में यह मेरा नाम था।
myfashionhub

1
मुझे भी उपयोग करना था -s, और उपयोग करने की आवश्यकता नहीं थी sudo -u postgres(बस createuser new_userठीक काम किया था)
मीकोही

2
psql: FATAL: role "jonny" does not existठीक है sudo -u postgres -s createuser jonnyतो क्यों createuser: creation of new role failed: ERROR: role "jonny" already exists
जोनाथन

134
sudo su - postgres

psql template1

"सुपरयुसर" के रूप में विशेषाधिकार के साथ pgsql पर भूमिका बनाना

CREATE ROLE username superuser;
eg. CREATE ROLE demo superuser;

फिर यूजर बनाएं

CREATE USER username; 
eg. CREATE USER demo;

उपयोगकर्ता को विशेषाधिकार सौंपें

GRANT ROOT TO username;

और फिर उस उपयोगकर्ता को लॉगिन सक्षम करें, ताकि आप चला सकें जैसे: psql template1सामान्य $टर्मिनल से:

ALTER ROLE username WITH LOGIN;

4
मैंने अभी-अभी PostgreSQL 9.4.4 का एक नया इंस्टॉलेशन किया और एक नए सुपरयुसर को बनाने के लिए फॉलो का उपयोग करने में सक्षम था: CREATE ROLE username superuser createdb login; जो तीनों चरणों को जोड़ती है ...
iPad Guy

25
# अनुदान जड़ मुझे; त्रुटि: भूमिका "जड़" मौजूद नहीं है
शाकर

6
सरल संस्करण: sudo -u postgres createuser --superuser $USER; sudo -u postgres createdb $USER
ज़च एस्टेला

2
@ शकर#GRANT postgres TO username
sha किमजमनी

मैं सर्वर को शुरू करने के लिए रूट का उपयोग कर रहा हूं, फिर `` psql -U postgres -h 127.0.0.1 --command "SUPERUSER PASSWORD 'पोस्टग्रैन्डोंडॉकर' के साथ USATE पोस्टग्रॉन्डर बना;" && \ createb -O postgresondocker postgresondocker`` क्या मैं इसे करने के लिए रूट का उपयोग कर सकता हूं अगर मैं इसे pg_ident में जोड़ दूं?
शिवांगी सिंह

85

उपयोग करके पोस्टग्रेज स्थापित करने से apt-getउपयोगकर्ता भूमिका या डेटाबेस नहीं बनता है।

अपने व्यक्तिगत उपयोगकर्ता खाते के लिए एक शानदार भूमिका और एक डेटाबेस बनाने के लिए:

sudo -u postgres createuser -s $(whoami); createdb $(whoami)


1
मुझे दूसरा भाग चलाने की आवश्यकता है:sudo -u postgres createdb $(whoami)
सैनड

2
@SanD यदि आपने अपना उपयोगकर्ता खाता सुपर उपयोगकर्ता ( -sपहले कमांड में ध्वज के माध्यम से ) के रूप में बनाया है, तो आप डेटाबेस को स्वयं बना सकते हैं। आप के createdbरूप में चलाने की जरूरत नहीं होगी postgres
मील्स एरिकसन

2
बहुत बढ़िया जवाब! मुझे डिबगिंग के घंटे बचाया !!
अमीनू कानो

79

यह मेरे लिए काम करता है:

psql -h localhost -U postgres

कृपया उपर्युक्त उपयोगकर्ता के लिए पासवर्ड जोड़ें।
चौधरी वकास

1
@Vincent अगर पासवर्ड को पोस्टग्रेक्यूएल इंस्टॉलेशन के बाद कभी नहीं बदला गया, तो डिफ़ॉल्ट रूप से यह postgres(लिनक्स और विंडोज पर परीक्षण किया गया) है।
सिल्वियोप्रोग

1
role postgres does not exist
जैकब श्नाइडर

15

कार्य विधि,

  1. vi /etc/postgresql/9.3/main/pg_hba.conf
  2. local all postgres peer यहाँ विश्वास करने के लिए सहकर्मी बदलें
  3. पुनर्प्रारंभ करें, sudo service postgresql restart

  4. अब कोशिश करो, psql -U postgres


1
यह स्पष्ट होना चाहिए कि trustविधि पूरी तरह से सुरक्षित वातावरण में ही उचित है। जबकि अविश्वसनीय कनेक्शन से पहुंच संभव है, कभी भी अपने डीबी क्लस्टर को इस तरह उजागर न करें।
एर्विन ब्रान्डस्टेट्टर

यह एक अच्छा है
horoyoi o

जाँच करें: यदि पोस्टग्रैस्कल सेवा शुरू नहीं हुई है, तो संभवतः फ़ाइल में कुछ त्रुटि हो सकती हैpg_hba.conf
चलें


11
psql postgres

postgres=# CREATE ROLE username superuser;
postgres=# ALTER ROLE username WITH LOGIN;

4
psql postgresपरिणाम:psql: FATAL: role "root" does not exist
टॉमस्वर

2
psql postgres -U postgres? आपके पास उपयोगकर्ता (-यू) पर निर्भर करता है।
मीडोवलार्क ब्रैडशर

धन्यवाद! मैं संघर्ष के बाद से रूट के साथ बैकअप postgresql करने के लिए संघर्ष कर रहा हूँ जब से मुझे पता नहीं है पासवर्ड
Dika

7

स्थानीय उपयोगकर्ता प्रॉम्प्ट में, रूट उपयोगकर्ता प्रॉम्प्ट नहीं, टाइप करें

sudo -u postgres createuser <local username>

फिर स्थानीय उपयोगकर्ता के लिए पासवर्ड दर्ज करें।

फिर पिछली कमांड दर्ज करें जो "भूमिका 'उपयोगकर्ता नाम उत्पन्न करता है।"

ऊपर के चरणों ने मेरे लिए समस्या हल कर दी। यदि नहीं, तो कृपया उपरोक्त चरणों के लिए टर्मिनल संदेश भेजें।



3

मैन्युअल रूप से एक DB क्लस्टर बनाकर इसे मेरे मामले में हल किया गया।

किसी कारण से, जब मैंने पोस्टग्रेज स्थापित किया, तो "प्रारंभिक डीबी" नहीं बनाया गया था। निष्पादन initdbने मेरे लिए चाल चली ।

यह समाधान PostgreSQL Wiki में उपलब्ध कराया गया है - पहला चरण :

initdb

आमतौर पर अपने ओएस पर पोस्टग्रेज स्थापित करने से एक "प्रारंभिक डीबी" बनता है और सर्वर डेमन रनिंग पोस्टग्रेज शुरू होता है। यदि नहीं, तो आपको initdb चलाने की आवश्यकता होगी



0

इन चरणों का पालन करें और यह आपके लिए काम करेगा:

  1. Daud msfconsole
  2. db_console टाइप करें
  3. आपके द्वारा बताई गई जानकारी को चुनने के लिए कुछ जानकारी आपको दिखाई जाएगी: db_connect user:pass@host:port.../databaseक्षमा करें, मुझे यह याद नहीं है, लेकिन यह एक ऐसा है, तो उपयोगकर्ता और पासवर्ड और मेजबान और डेटाबेस database.ymlको विस्थापन में शामिल जानकारी के साथ बदलें :/usr/share/metasploit-framework/config
  4. तुम देखोगे। पृष्ठभूमि में मॉडल कैश का पुनर्निर्माण।
  5. टर्मिनल और लंच msfconsole को पुनरारंभ करने के बाद apt-get update && apt-get उन्नयन टाइप करें और यह काम करता है कि आप जांच सकते हैं कि टाइप करके msfconsole: msf>db_statusआप देखेंगे कि यह जुड़ा हुआ है।

0

--no-owner --no-privilegesझंडे के साथ डंप और बहाल

जैसे

डंप - pg_dump --no-owner --no-privileges --format=c --dbname=postgres://userpass:username@postgres:5432/schemaname > /tmp/full.dump

पुनर्स्थापित करें - pg_restore --no-owner --no-privileges --format=c --dbname=postgres://userpass:username@postgres:5432/schemaname /tmp/full.dump

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