पहली बार postgresql को कॉन्फ़िगर कैसे करें?


197

मैंने अभी स्थापना के दौरान postgresql स्थापित किया है और मैंने पासवर्ड x निर्दिष्ट किया है। जब मैं createdbसंदेश प्राप्त करने के लिए किसी भी पासवर्ड को करने और निर्दिष्ट करने का प्रयास करता हूं:

createb: डेटाबेस पोस्टग्रेज से कनेक्ट नहीं हो सका: उपयोगकर्ता के लिए FATAL: पासवर्ड प्रमाणीकरण विफल रहा

उसी के लिए createuser

मुझे कैसे शुरू करना चाहिए? क्या मैं डेटाबेस में एक उपयोगकर्ता के रूप में खुद को जोड़ सकता हूं?



4
यह बहुत हद तक वही है जो यह सवाल था जो एक साल बाद पूछा गया था। लेकिन, मेरा मानना ​​है कि इसका एक खतरनाक प्राथमिक उत्तर है। आपको उपयोगकर्ता की स्थापना नहीं करनी चाहिए postgres। यह SUPostgreSQL का है, और यह आपको इसके खिलाफ लॉगिन-हमलों के लिए खोलता है। एक और सुपर-उपयोगकर्ता बनाएँ , और postgresरूट के साथ UNIX प्रवेश के लिए लॉक आरक्षित करें ।
इवान कैरोल

जवाबों:


329

अन्य उत्तर मेरे लिए पूरी तरह से संतोषजनक नहीं थे। यहाँ Xgruntu 12.04.1 LTS पर postgresql-9.1 के लिए काम किया है।

  1. उपयोगकर्ता पोस्टग्रेज के साथ डिफ़ॉल्ट डेटाबेस से कनेक्ट करें:

    sudo -u psql template1 को पोस्ट करता है

  2. उपयोगकर्ता पोस्टग्रेज के लिए पासवर्ड सेट करें, फिर psql (Ctrl-D) से बाहर निकलें:

    ALTER USER एन्क्रिप्टेड पासवर्ड 'xxxxxxx' के साथ पोस्ट करता है;

  3. pg_hba.confफ़ाइल संपादित करें :

    sudo vim /etc/postgresql/9.1/main/pg_hba.conf

    पोस्टग्रेज से संबंधित लाइन पर "सहकर्मी" को "md5" में बदलें:

    स्थानीय सभी      postgres      सहकर्मी md5

    यह जानने के लिए कि आपके द्वारा चलाए जा रहे पोस्टग्रैस्कल का कौन सा संस्करण है, के अंतर्गत संस्करण फ़ोल्डर देखें /etc/postgresql। इसके अलावा, आप VIM के बजाय नैनो या अन्य संपादक का उपयोग कर सकते हैं।

  4. डेटाबेस को पुनरारंभ करें:

    sudo /etc/init.d/postgresql पुनरारंभ करें

    (यहां आप जांच कर सकते हैं कि यह किसके साथ काम करता है psql -U postgres)।

  5. एक उपयोगकर्ता बनाएं जिसका नाम आपके पास है (इसे खोजने के लिए, आप टाइप कर सकते हैं whoami):

    sudo createuser -U postgres -d -e -E -l -r -s <my_name>

    विकल्प postgresql को एक उपयोगकर्ता बनाने के लिए बताते हैं जो लॉगिन कर सकता है, डेटाबेस बना सकता है, नई भूमिकाएं बना सकता है, एक सुपरयूज़र है, और इसमें एक एन्क्रिप्टेड पासवर्ड होगा। वास्तव में महत्वपूर्ण हैं -P -E, ताकि आपको पासवर्ड टाइप करने के लिए कहा जाए जो एन्क्रिप्ट किया जाएगा, और -d ताकि आप एक कर सकें createdb

    पासवर्ड से सावधान रहें : यह पहले आपको दो बार नया पासवर्ड (नए उपयोगकर्ता के लिए), बार-बार, और फिर एक बार पासवर्ड (एक कदम 2 पर निर्दिष्ट) को पूछेगा।

  6. फिर, pg_hba.confफ़ाइल को संपादित करें (ऊपर चरण 3 देखें), और "सहकर्मी" को "md5" लाइन पर "सभी" अन्य उपयोगकर्ताओं से संबंधित बदलें:

    स्थानीय सब      सब      सहकर्मी md5

  7. पुनरारंभ करें (चरण 4 में की तरह), और जाँच करें कि आप बिना यू लॉगिन कर सकते हैं:

    psql template1

    ध्यान दें कि यदि आप एक मात्र करते हैं psql, तो यह विफल हो जाएगा क्योंकि यह आपको डिफ़ॉल्ट डेटाबेस से कनेक्ट करने का प्रयास करेगा, जिसका नाम आपके (यानी whoami) के समान होगा। template1 वह व्यवस्थापक डेटाबेस है जो यहां शुरू से है।

  8. अब createdb <dbname>काम करना चाहिए।


इस प्रक्रिया ने उबंटू 13.10 पर भी बहुत अच्छा काम किया। उपयोगकर्ता बनाते समय चरण 5 में sudo को याद रखें।
डेविड ने हरिंग

2
उबंटू 14.04 एलटीएस पर महान काम किया
ilhnctn

2
सिर्फ एक नोट के रूप में, लाइन pg_hba.confपहली पंक्ति होनी चाहिए, अन्यथा यह अन्य नियमों (F21 पर pgsql 9.3.5 के कारण) को नजरअंदाज कर सकता है। मुझे यह पता लगाने में कुछ समय लगा, कि पोस्टग्रेजिक उपयोगकर्ता के लिए पहले से टिप्पणी की गई लाइनों को अनकम्प्रेस्ड करना और बदलना बस नहीं चलेगा।
द्वादशी

मुझे लगता है कि यह पीजी 9.4 में बदल गया है, क्योंकि मेरे पास केवल local all all peer3 बिंदु है जो अब मैं बदल गया हूं md5। ठीक?
लेओ लेपोल्ड हर्ट्ज़ o

1
कृपया 2017 का उत्तर अपडेट करें! PostgreSQL 9.6 और UBUNTU 16 LTS ... कोई सरल तरीका नहीं ??
पीटर क्रस

55

लिनक्स PostgresQL के तहत आमतौर पर postgresखोल (कंसोल या ss) से सुपरसुगर के रूप में रूट उपयोगकर्ता को लॉगिन करने की अनुमति देने के लिए कॉन्फ़िगर किया गया है ।

$ psql -U postgres

फिर आप हमेशा की तरह एक नया डेटाबेस बनाएँगे:

CREATE ROLE myuser LOGIN password 'secret';
CREATE DATABASE mydatabase ENCODING 'UTF8' OWNER myuser;

यह बिना छुए काम करना चाहिए pg_hba.conf। यदि आप नेटवर्क पर कुछ GUI टूल का उपयोग करके ऐसा करने में सक्षम होना चाहते हैं - तो आपको गड़बड़ करने की आवश्यकता होगी pg_hba.conf


मैं खिड़कियों पर काम कर रहा हूँ मैं अपनी निर्देशिका के लिए initdb भागा और मौजूद विन्यास फाइल है। अब createb काम करता है लेकिन जब मैं psql परीक्षण करता हूं तो मुझे संदेश मिलता है WARNING: कंसोल कोड पेज (437) विंडोज कोड पेज से अलग होता है (1252) 8-बिट अक्षर सही तरीके से काम नहीं कर सकते हैं। विवरण के लिए psql संदर्भ पृष्ठ "विंडोज उपयोगकर्ताओं के लिए नोट्स" देखें। और कोई भी आदेश काम नहीं करता है।
रोहित बंगा

7
psql: FATAL: Peer authentication failed for user "postgres"सूडो के साथ भी।
पीटर क्रूस

बिल्कुल सही जवाब, मैं विन्यास फाइल पर स्पर्श नहीं करना चाहता था और इसने पोस्टग्रेसीएल 10.10 पर उबंटू में त्रुटिपूर्ण रूप से काम किया। आपको इसके बाद कनेक्ट करने में सक्षम होना चाहिए psql -d mydatatabase -U myuser
रानू

21

यह मेरा समाधान है:

su root
su postgres
psql

4
यह कई मामलों में काम करेगा क्योंकि कई साइटों के पास pg_hba.conf होगा पोस्टग्रेज सिस्टम अकाउंट (सहकर्मी विधि) के खिलाफ पोस्टगर्ल डीबी उपयोगकर्ता को प्रमाणित करता है। हालाँकि, सफल लॉगिन किसी भी विशेष साइट के लिए pg_hba.conf की सामग्री पर निर्भर करेगा।
रीड सैंडबर्ग

1
मेरे लिए काम किया। मैंने पहली पंक्ति को बदल दिया sudo bash
eje211

मुझे नहीं लगता कि यह कैसे मदद करता है, .. मेरी समझ से, यह रूट और पोस्टग्रेज में लॉग इन करता है, और psql चलाता है। वास्तव में क्या हो रहा है? धन्यवाद!
ओललेह

20

दो तरीके हैं जिनका आप उपयोग कर सकते हैं। उपयोगकर्ता और डेटाबेस बनाने के लिए दोनों की आवश्यकता होती है ।

  1. निर्माता और createb का उपयोग करना ,

    $ sudo -u postgres createuser --superuser $USER
    $ createdb mydatabase
    $ psql -d mydatabase
  2. SQL प्रशासन कमांड का उपयोग करना, और टीसीपी पर एक पासवर्ड के साथ कनेक्ट करना

    $ sudo -u postgres psql postgres

    और, फिर psql खोल में

    CREATE ROLE myuser LOGIN PASSWORD 'mypass';
    CREATE DATABASE mydatabase WITH OWNER = myuser;

    फिर आप लॉगिन कर सकते हैं,

    $ psql -h localhost -d mydatabase -U myuser -p <port>

    यदि आप पोर्ट को नहीं जानते हैं, तो आप इसे हमेशा निम्न प्रकार से चला postgresसकते हैं, उपयोगकर्ता के रूप में ,

    SHOW port;

    या,

    $ grep "port =" /etc/postgresql/*/main/postgresql.conf

सिडेनोट: postgresउपयोगकर्ता

मेरा सुझाव है कि उपयोगकर्ता को संशोधित नहीं करना चाहिए postgres

  1. यह सामान्य रूप से ओएस से बंद है। किसी को भी "लॉग इन" ऑपरेटिंग सिस्टम के रूप में नहीं माना जाता है postgres। आप के रूप में प्रमाणित करने के लिए रूट करने के लिए माना जाता है postgres
  2. यह आम तौर पर पासवर्ड संरक्षित नहीं है और मेजबान ऑपरेटिंग सिस्टम को दर्शाता है। यह अच्छी बात है । यह सामान्य रूप से लॉग इन करने का अर्थ है postgresजो कि SQL सर्वर के PostgreSQL के बराबर हैSA , आपको अंतर्निहित डेटा फ़ाइलों को राइट-एक्सेस करना होगा। और, इसका मतलब है कि आप आमतौर पर कहर बरपा सकते हैं।
  3. इसे अक्षम करके, आप एक सुपर-उपयोगकर्ता नाम के माध्यम से एक क्रूर बल के हमले का खतरा दूर करते हैं। सुपरयुजर के नाम को कंसीव करने और अस्पष्ट करने के फायदे हैं।

पहली विधि के साथ, उपयोगकर्ता बिना किसी विशेषाधिकार के समाप्त होता है। मैंने पहले कमांड के बजाय इसका उपयोग किया:sudo -u postgres createuser -U postgres -d -e -E -l -P -r -s $(whoami)
फेबियन सन्नुअर्ट

@FabienSnauwaert -sउपयोगकर्ता को सुपरयुसर बनाता है।
इवान कैरोल

16

संपादित करें: चेतावनी: कृपया, इवान कैरोल द्वारा पोस्ट किए गए उत्तर को पढ़ें । ऐसा लगता है कि यह समाधान सुरक्षित नहीं है और अनुशंसित नहीं है।

यह मेरे लिए मानक Ubuntu 14.04 64 बिट्स इंस्टॉलेशन में काम किया।

मैंने छोटे संशोधनों के साथ निर्देशों का पालन किया, जो मुझे http://suite.opengeo.org/4.1/dataadmin/pgGettingStarted/firstconnect.html में मिले।

  1. PostgreSQL स्थापित करें (यदि आपकी मशीन में पहले से नहीं है):

sudo apt-get install postgresql

  1. पोस्टग्रेज उपयोगकर्ता का उपयोग करके psql चलाएं

sudo –u postgres psql postgres

  1. उपयोगकर्ता के लिए नया पासवर्ड सेट करें:

\password postgres

  1. बाहर निकलें psql

\q

  1. संपादित करें /etc/postgresql/9.3/main/pg_hba.conf और बदलें:

#Database administrative login by Unix domain socket local all postgres peer

सेवा:

#Database administrative login by Unix domain socket local all postgres md5

  1. PostgreSQL को पुनरारंभ करें:

sudo service postgresql restart

  1. एक नया डेटाबेस बनाएँ

sudo –u postgres createdb mytestdb

  1. फिर से पोस्ट उपयोगकर्ता के साथ psql चलाएँ:

psql –U postgres –W

  1. मौजूदा डेटाबेस सूचीबद्ध करें (आपका नया डेटाबेस अभी होना चाहिए):

\l


1
मुझे नीचा दिखा क्योंकि मुझे लगता है कि postgresउपयोगकर्ता को सक्रिय करना एक बुरा विचार है। stackoverflow.com/a/41604969/124486
इवान कैरोल

4
Note: textdb is the database which you are going to explore with 'alex' user 

root@kalilinux:~# sudo su - postgres 
postgres=#  psql   
postgres=#  create database testdb;
postgres=#  create user alex with password 'alex';
postgres=# GRANT ALL PRIVILEGES ON DATABASE testdb TO alex;`enter code here`

3

आपको संभवतः अपनी pg_hba.confफ़ाइल को अपडेट करने की आवश्यकता है । यह फ़ाइल नियंत्रित करती है कि उपयोगकर्ता क्या आईपी पते से लॉग इन कर सकते हैं। मुझे लगता है कि पोस्टग्रेज उपयोगकर्ता डिफ़ॉल्ट रूप से बहुत लॉक-डाउन है।


2
RHEL6.4 और पोस्टग्रेज 8.4 के लिए फ़ाइल में स्थित थी /var/lib/pgsql/data/pg_hba.conf। बदलें identकरने trustके लिए host(और localआप ssh का उपयोग कर रहे हैं)।
डेविड

3

यदि आप macOS चला रहे हैं जैसे कि मैं हूं, तो आपके पास पोस्टग्रेज उपयोगकर्ता नहीं हो सकता है।

जब दौड़ने की कोशिश कर रहा है sudo -u postgres psql मैं रहा था तो मुझे त्रुटि मिल रही थीsudo: unknown user: postgres

सौभाग्य से, ऐसे निष्पादनयोग्य हैं जो प्रदान करता है।

createuser -D /var/postgres/var-10-local --superuser --username=nick
createdb --owner=nick

तब मैं psqlमुद्दों के बिना उपयोग करने में सक्षम था ।

psql
psql (10.2)
Type "help" for help.

nick=#

यदि आप स्क्रैच से एक नया पोस्टग्रैस उदाहरण बना रहे हैं, तो यहां मैंने कदम उठाए हैं। मैंने एक नॉन-डिफॉल्ट पोर्ट का इस्तेमाल किया ताकि मैं दो इंस्टेंसेस चला सकूं।

mkdir /var/postgres/var-10-local
pg_ctl init -D /var/postgres/var-10-local

फिर मैंने /var/postgres/var-10-local/postgresql.confअपने पसंदीदा पोर्ट, 5433 के साथ संपादन किया ।

/Applications/Postgres.app/Contents/Versions/10/bin/postgres -D /Users/nick/Library/Application\ Support/Postgres/var-10-local -p 5433

createuser -D /var/postgres/var-10-local --superuser --username=nick --port=5433
createdb --owner=nick --port=5433

किया हुआ!


2

मैकओएस में, मैंने इसे काम करने के लिए नीचे दिए गए चरणों का पालन किया।

पहली बार, स्थापना के बाद, सिस्टम का उपयोगकर्ता नाम प्राप्त करें।

$ cd ~
$ pwd
/Users/someuser
$ psql -d postgres -U someuser

अब जब आप सिस्टम में लॉग इन कर चुके हैं, और आप डीबी बना सकते हैं।

postgres=# create database mydb;
CREATE DATABASE
postgres=# create user myuser with encrypted password 'pass123';
CREATE ROLE
postgres=# grant all privileges on database mydb to myuser;
GRANT

0

बस अपनी स्थापना की निर्देशिका तक ब्राउज़ करें और इस फ़ाइल को "pg_env.bat" निष्पादित करें, इसलिए बिन फ़ोल्डर में जाने के बाद और pgAdmin.exe निष्पादित करें। यह कोई संदेह नहीं है काम करना चाहिए!

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