PostgreSQL: PostgreSQL उपयोगकर्ता पासवर्ड कैसे बदलें?


जवाबों:


1402

पासवर्ड कम लॉगिन के लिए:

sudo -u user_name psql db_name

पासवर्ड भूल जाने पर रीसेट करने के लिए:

ALTER USER user_name WITH PASSWORD 'new_password';

126
यह उपयोगकर्ता के पोस्टग्रैस्कल कमांड इतिहास में स्पष्ट पासवर्ड को जाने दें।
greg

118
@ समूह: इसलिए इसे हटा दें:rm ~/.psql_history
रिका

43
बंद विषय लेकिन अगर किसी को "उपयोगकर्ता का नाम कैसे बदलना है" की तुलना में ALTER USER myuser RENAME TO newname;... किसी कारण से Google मुझे यहाँ इशारा कर रहा था जब मैं उस पर ध्यान आकर्षित कर रहा था :)
समतुल्य

10
आप "और 'दोनों उद्धरणों का उपयोग क्यों कर रहे हैं? मेरा मतलब है, एक अंतर है, और एक डीएमएल क्वेरी में आपको' तार का उपयोग करते समय 'का उपयोग करना होगा, लेकिन क्या यहां दोनों का उपयोग करने का एक विशेष कारण है?
बोयॉन

7
उपयोगकर्ता एक वस्तु है, न कि एक स्ट्रिंग। ALTER TABLE "table_name" या यहां तक ​​कि "table_name" से * सेलेक्ट करें। आप इन संदर्भों में तालिकाओं के साथ एकल उद्धरणों का उपयोग नहीं कर सकते, और यह उपयोगकर्ताओं / भूमिकाओं के साथ समान है।
पी डैडी

630

फिर टाइप करें:

$ sudo -u postgres psql

फिर:

\password postgres

फिर छोड़ने के लिए psql:

\q

अगर वह काम नहीं करता है, तो प्रमाणीकरण को फिर से कॉन्फ़िगर करें।

संपादित करें /etc/postgresql/9.1/main/pg_hba.conf(पथ भिन्न होगा) और बदलें:

    local   all             all                                     peer

सेवा:

    local   all             all                                     md5

फिर सर्वर को पुनरारंभ करें:

$ sudo service postgresql restart

3
पोस्टग्रेजुएट के लिए डिफ़ॉल्ट पासवर्ड क्या है? इसे आकस्मिक रूप से बदल दिया; रीसेट करना संभव है?
साद

2
(psql 9.2 पर) अगर मैं टाइप करता हूं \p, तो यह मुझे पासवर्ड देता है; अगर मैं इसमें टाइप करता हूँ \password postgresतो पासवर्ड देता है और फिर चेतावनी देता है\p extra argument "assword" ignored; \p extra argument "postgres" ignored
David LeBauer

1
यह SQL कमांड हिस्ट्री में पासवर्ड छोड़ने से बहुत बेहतर है।
ओटोकन

1
@ZacharyScott आप क्या कह रहे हैं?
TheRealChx101

2
Linux में उपयोक्ता के पासवर्ड को बदलने के लिए:sudo passwd postgres
Punnerud

88

आपके पास उपयोगकर्ताओं का पासवर्ड एन्क्रिप्ट किया जा सकता है:

ALTER USER username WITH ENCRYPTED PASSWORD 'password';

45
वर्तमान संस्करण के लिए यह कीवर्ड कोई मायने नहीं रखता है। से postgresql.org/docs/current/static/sql-createrole.html The password is always stored encrypted in the system catalogs. The ENCRYPTED keyword has no effect, but is accepted for backwards compatibility.
John29

5
सावधान रहें! @ जॉन 29 टिप्पणी केवल पोस्टग्रैस्कल 10 और उसके बाद के संस्करण से सच है। अन्य सभी संस्करणों के लिए चिह्नित ध्वज मायने रखता है।
पेज

51

मेरा मानना ​​है कि पासवर्ड को बदलने का सबसे अच्छा तरीका बस उपयोग करना है:

\password

पोस्टग्रेज कंसोल में।

स्रोत:

इस आदेश के साथ अनएन्क्रिप्टेड पासवर्ड निर्दिष्ट करते समय सावधानी बरती जानी चाहिए। पासवर्ड सर्वर को क्लीयरटेक्स्ट में प्रेषित किया जाएगा, और इसे क्लाइंट के कमांड हिस्ट्री या सर्वर लॉग में भी लॉग इन किया जा सकता है। psql में एक कमांड \ पासवर्ड होता है जिसका उपयोग स्पष्ट पासवर्ड को उजागर किए बिना किसी भूमिका के पासवर्ड को बदलने के लिए किया जा सकता है।

से https://www.postgresql.org/docs/9.0/static/sql-alterrole.html


8
इसका उपयोग अन्य उपयोगकर्ताओं के लिए पासवर्ड बदलने के लिए भी किया जा सकता है:\password username
मार्टिन

34

लिनक्स कमांड लाइन का उपयोग करके पासवर्ड बदलने के लिए, उपयोग करें:

sudo -u <user_name> psql -c "ALTER USER <user_name> PASSWORD '<new_password>';"

5
बस याद रखें कि यह संभवतः आपके कमांड इतिहास में db के उपयोगकर्ता पासवर्ड को बचाएगा।
पेड्रो कॉर्डियारो

2
क्या आप यहाँ पर्यावरण चर का उपयोग कर सकते हैं? मैं इसे एक तैनाती स्क्रिप्ट में स्वचालित करना चाहता हूं
TheRealChx101

26

पासवर्ड बदलने के लिए

 sudo -u postgres psql

फिर

\password postgres

अब नया पासवर्ड दर्ज करें और पुष्टि करें

फिर \qबाहर निकलने के लिए


1
यह जवाब मेरी मदद करो। धन्यवाद
मोहम्मद जवाद बाराती

24

अपने Postgresql कॉन्फ़िगर और संपादित करें pg_hba.conf पर जाएं

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

फिर इस लाइन को बदलें:

Database administrative login by Unix domain socket
local      all              postgres                                md5

सेवा :

Database administrative login by Unix domain socket
local   all             postgres                                peer

तब SUDO कमांड के माध्यम से PostgreSQL सेवा को पुनरारंभ करें

psql -U postgres

अब आप दर्ज किए जाएंगे और Postgresql टर्मिनल देखेंगे

फिर दर्ज करें

\password

और पोस्टग्रेज डिफ़ॉल्ट उपयोगकर्ता के लिए नया पासवर्ड दर्ज करें, सफलतापूर्वक पासवर्ड बदलने के बाद फिर से pg_hba.conf पर जाएं और परिवर्तन को "md5" पर वापस लाएं।

अब आप के रूप में लॉग इन किया जाएगा

psql -U postgres

अपने नए पासवर्ड के साथ।

अगर आप सभी को इसमें कोई समस्या मिलती है तो मुझे बताएं।


यह काम नहीं करता है:user@user-NC10:~$ psql -U postgres psql: FATAL: Peer authentication failed for user "postgres"
जीएम

ठीक है, एक अन्य विधि sudo su - psgres psql आप टर्मिनल में प्रवेश करेंगे और फिर वहां पासवर्ड बदलेंगे, यह इसके लिए एक वैकल्पिक तरीका है। मुझे बताएं कि क्या यह आपके लिए काम करता है या आपको पूर्ण स्पष्टीकरण की आवश्यकता है
मुर्तजा कांचवाला

मिमी मैंने कोशिश की है, लेकिन मेरे पास एक और त्रुटि है: / usr / bin / psql: पंक्ति 19: उपयोग: कमांड नहीं मिला / usr / bin / psql: पंक्ति 21: उपयोग: कमांड नहीं मिला / usr / बिन / psql: पंक्ति 23: उपयोग करें: कमांड नहीं मिला / usr / bin / psql: लाइन 24: उपयोग: कमांड नहीं मिला / usr / bin / psql: psql: लाइन 26: अप्रत्याशित टोकन के पास सिंटैक्स त्रुटि $version,' /usr/bin/psql: psql: line 26: ($ संस्करण, $ क्लस्टर, $ £, $ पोर्ट , $ मेजबान); ' आपकी सहायताके लिए धन्यवाद!
GM

11

के लिए एक नया पासवर्ड अनुरोध करने के लिए postgres (आदेश में यह दिखाए बिना) उपयोगकर्ता:

sudo -u postgres psql -c "\password"

9

कॉन्फ़िगरेशन जो मैंने अपने सर्वर पर प्राप्त की है उसे बहुत अनुकूलित किया गया था और मैंने फ़ाइल में विश्वास प्रमाणीकरण सेट करने के बाद ही पासवर्ड बदलने में कामयाबी हासिल की :pg_hba.conf

local   all   all   trust

इसे वापस पासवर्ड या md5 में बदलना न भूलें


1
प्रभावी होने के लिए आपको अपनी पोस्टग्रेज सेवा को फिर से शुरू करने की आवश्यकता हैsudo systemctl restart postgresql.service
संपत सुरनीनी

यह pg_hba.conf फ़ाइल कहाँ जानी चाहिए?
JMStudios.jrichardson

8

यह Google पर पहला परिणाम था, जब मैं देख रहा था कि किसी उपयोगकर्ता का नाम कैसे बदला जाए:

ALTER USER <username> WITH PASSWORD '<new_password>';  -- change password
ALTER USER <old_username> RENAME TO <new_username>;    -- rename user

उपयोगकर्ता प्रबंधन के लिए उपयोगी कुछ अन्य कमांड:

CREATE USER <username> PASSWORD '<password>' IN GROUP <group>;
DROP USER <username>;

उपयोगकर्ता को दूसरे समूह में ले जाएं

ALTER GROUP <old_group> DROP USER <username>;
ALTER GROUP <new_group> ADD USER <username>;

7

उबंटू 14.04 पर मेरे मामले के लिए 10.3 पोस्टग्रेज के साथ स्थापित किया गया। मुझे निम्नलिखित चरणों का पालन करने की आवश्यकता है

  • su - postgres उपयोगकर्ता को स्विच करने के लिए postgres
  • psql पोस्टग्रेज शेल में प्रवेश करने के लिए
  • \password फिर अपना पासवर्ड डालें
  • \q शेल सत्र को छोड़ने के लिए
  • फिर आप निष्पादित करके रूट पर वापस जाते हैं exitऔर अपने लाइन को कॉन्फ़िगर करें pg_hba.conf(मेरा चालू है /etc/postgresql/10/main/pg_hba.conf) यह सुनिश्चित करके कि आपके पास निम्न पंक्ति है

    local all postgres md5

  • द्वारा अपनी पोस्टग्रेज सेवा को पुनरारंभ करें service postgresql restart
  • अब postgresउपयोगकर्ता पर जाएं और पोस्टग्रेज शेल फिर से दर्ज करें। यह आपको पासवर्ड के साथ संकेत देगा।

मुझे नहीं लगता कि पासवर्ड बदलने के बाद आपको वास्तव में पोस्टग्रैक्स्ल सेवा को पुनरारंभ करने की आवश्यकता है। मैं पासवर्ड को पुनरारंभ करने के साथ रीसेट करने में सक्षम हूं। \ पासवर्ड सबसे तेज़ तरीका है। या फिर आपको ALTER USER कमांड की आवश्यकता है।
अर्चित कपूर

3

इसे इस्तेमाल करो:

\password

उस उपयोगकर्ता के लिए नया पासवर्ड दर्ज करें और फिर उसकी पुष्टि करें। यदि आपको पासवर्ड याद नहीं है और आप इसे बदलना चाहते हैं, तो आप पोस्टग्रेज के रूप में लॉग इन कर सकते हैं और फिर इसका उपयोग कर सकते हैं:

ALTER USER 'the username' WITH PASSWORD 'the new password';

3

सिंटैक्स में अन्य उत्तरों के समान लेकिन यह ज्ञात होना चाहिए कि आप पासवर्ड का एक md5 भी पास कर सकते हैं ताकि आप एक सादा पाठ पासवर्ड प्रेषित नहीं कर रहे हैं।

सादे पाठ में उपयोगकर्ताओं के पासवर्ड को बदलने के अनपेक्षित परिणामों के कुछ परिदृश्य यहां दिए गए हैं।

  1. यदि आपके पास एसएसएल नहीं है और आप दूरस्थ रूप से संशोधित कर रहे हैं, तो आप पूरे नेटवर्क में सादे पाठ पासवर्ड को संचारित कर रहे हैं।
  2. यदि आपके पास डीडीएल विवरण log_statement = ddlया उच्चतर लॉग करने के लिए आपका लॉगिंग कॉन्फ़िगरेशन सेट है , तो आपका सादा पाठ पासवर्ड आपकी त्रुटि लॉग में दिखाई देगा।
    1. यदि आप इन लॉग को सुरक्षित नहीं कर रहे हैं तो यह एक समस्या है।
    2. यदि आप इन लॉग / ईटीएल को इकट्ठा करते हैं और उन्हें प्रदर्शित करते हैं जहां दूसरों के पास पहुंच है तो वे इस पासवर्ड आदि को देख सकते हैं।
    3. यदि आप किसी उपयोगकर्ता को अपना पासवर्ड प्रबंधित करने की अनुमति देते हैं, तो वे अनजाने में किसी पासवर्ड को किसी व्यवस्थापक या निम्न स्तर के कर्मचारी को लॉग इन की समीक्षा करने के लिए प्रकट कर रहे हैं।

इसके साथ यहां कहा गया है कि हम पासवर्ड के md5 का निर्माण करके उपयोगकर्ता के पासवर्ड को कैसे बदल सकते हैं।

  • जब md5 के रूप में एक पासवर्ड हैश पोस्ट करता है, तो उपयोगकर्ता नाम के साथ पासवर्ड को नमक करता है, फिर परिणामी हैश के लिए "md5" पाठ को प्रीपेन्ड करता है।
  • ex: "md5" + md5 (पासवर्ड + उपयोगकर्ता नाम)

  • बैश में:

    ~$ echo -n "passwordStringUserName" | md5sum | awk '{print "md5"$1}'
    md5d6a35858d61d85e4a82ab1fb044aba9d
  • PowerShell में:
    [PSCredential] $Credential = Get-Credential

    $StringBuilder = New-Object System.Text.StringBuilder

    $null = $StringBuilder.Append('md5');

    [System.Security.Cryptography.HashAlgorithm]::Create('md5').ComputeHash([System.Text.Encoding]::ASCII.GetBytes(((ConvertFrom-SecureStringToPlainText -SecureString $Credential.Password) + $Credential.UserName))) | ForEach-Object {
        $null = $StringBuilder.Append($_.ToString("x2"))
    }

    $StringBuilder.ToString();

    ## OUTPUT
    md5d6a35858d61d85e4a82ab1fb044aba9d
  • तो आखिरकार हमारी ALTER USERकमान दिखेगी
    ALTER USER UserName WITH PASSWORD 'md5d6a35858d61d85e4a82ab1fb044aba9d';
  • प्रासंगिक लिंक (नोट मैं केवल पुराने संस्करणों के लिंक को पुराने के लिए लिंक करूंगा, इसमें कुछ बदलाव होंगे लेकिन md5 अभी भी एक तरीके का समर्थन कर रहा है।)
  • भूमिका बनाएं
  • पासवर्ड हमेशा सिस्टम कैटलॉग में एन्क्रिप्टेड संग्रहीत किया जाता है। ENCRYPTED कीवर्ड का कोई प्रभाव नहीं है, लेकिन पश्चगामी संगतता के लिए स्वीकार किया जाता है। एन्क्रिप्शन की विधि कॉन्फ़िगरेशन पैरामीटर password_enc एन्क्रिप्शन द्वारा निर्धारित की जाती है। यदि प्रस्तुत पासवर्ड स्ट्रिंग पहले से ही एमडी 5-एन्क्रिप्टेड या एससीआरएएम-एन्क्रिप्टेड प्रारूप में है, तो इसे पासवर्ड_केन एन्क्रिप्शन की परवाह किए बिना संग्रहीत किया जाता है (क्योंकि सिस्टम निर्दिष्ट एन्क्रिप्ट किए गए पासवर्ड स्ट्रिंग को डिक्रिप्ट नहीं कर सकता है, इसे एक अलग प्रारूप में एन्क्रिप्ट करने के लिए)। यह डंप / रिस्टोर के दौरान एन्क्रिप्टेड पासवर्ड को फिर से लोड करने की अनुमति देता है।

  • password_enc एन्क्रिप्शन के लिए कॉन्फ़िगरेशन सेटिंग
  • पासवर्ड प्रमाणीकरण doc पोस्ट करता है
  • बिल्डिंग पासवर्ड md5 पोस्टग्रैट्स

1

सामान्य तौर पर, db संबंधित गतिविधि करने के लिए बस pg admin UI का उपयोग करें।

यदि इसके बजाय आप अपने स्थानीय विकास, या CI आदि के लिए डेटाबेस सेटअप को स्वचालित करने में अधिक ध्यान केंद्रित कर रहे हैं ...

उदाहरण के लिए, आप इस तरह से एक साधारण कॉम्बो का उपयोग कर सकते हैं।

(ए) इस के समान कमांड के साथ जेनकींस के माध्यम से एक डमी सुपर उपयोगकर्ता बनाएं:

docker exec -t postgres11-instance1 createuser --username=postgres --superuser experiment001

यह एक सुपर उपयोगकर्ता बना देगा जिसे आप में001001 कहा जाता है।

(b) इस उपयोगकर्ता को NON-Interactive SQL कमांड चलाकर कुछ पासवर्ड दें।

docker exec -t postgres11-instance1 psql -U experiment001 -d postgres -c "ALTER USER experiment001 WITH PASSWORD 'experiment001' "

कमांड लाइन (गैर-संवादात्मक) टूलिंग के लिए पोस्टग्रैज संभवत: सबसे अच्छा डेटाबेस है। उपयोगकर्ता बनाना, SQL चलाना, डेटाबेस का बैकअप बनाना आदि ... सामान्य तौर पर यह सभी पोस्टग्रेज के साथ काफी बुनियादी है और इसे समग्र रूप से आपके विकास सेटअप स्क्रिप्ट या स्वचालित CI कॉन्फ़िगरेशन में एकीकृत करने के लिए काफी तुच्छ है।


1

और बैश और अपेक्षा के साथ पूरी तरह से स्वचालित तरीके से ( इस उदाहरण में हम नए पोस्टग्रेज व्यवस्थापक को ओएस पर दोनों पोस्ट किए गए पोस्टग्रेज और रन-टाइम स्तर को पोस्ट करते हैं)

  # the $postgres_usr_pw and the other bash vars MUST be defined 
  # for reference the manual way of doing things automated with expect bellow
  #echo "copy-paste: $postgres_usr_pw"
  #sudo -u postgres psql -c "\password"
  # the OS password could / should be different
  sudo -u root echo "postgres:$postgres_usr_pw" | sudo chpasswd

  expect <<- EOF_EXPECT
     set timeout -1
     spawn sudo -u postgres psql -c "\\\password"
     expect "Enter new password: "
     send -- "$postgres_usr_pw\r"
     expect "Enter it again: "
     send -- "$postgres_usr_pw\r"
     expect eof
EOF_EXPECT

  cd /tmp/
  # at this point the postgres uses the new password
  sudo -u postgres PGPASSWORD=$postgres_usr_pw psql \
    --port $postgres_db_port --host $postgres_db_host -c "
  DO \$\$DECLARE r record;
     BEGIN
        IF NOT EXISTS (
           SELECT
           FROM   pg_catalog.pg_roles
           WHERE  rolname = '"$postgres_db_useradmin"') THEN
              CREATE ROLE "$postgres_db_useradmin" WITH SUPERUSER CREATEROLE
              CREATEDB REPLICATION BYPASSRLS 
 PASSWORD '"$postgres_db_useradmin_pw"' LOGIN ;
        END IF;
     END\$\$;
  ALTER ROLE "$postgres_db_useradmin" WITH SUPERUSER CREATEROLE
  CREATEDB REPLICATION BYPASSRLS 
PASSWORD  '"$postgres_db_useradmin_pw"' LOGIN ;
 "

0

TLDR:

कई प्रणालियों पर, एक उपयोगकर्ता के खाते में अक्सर एक अवधि होती है, या किसी प्रकार का विराम चिह्न (उपयोगकर्ता: john.smith, horise.johnson)। इन मामलों में ऊपर दिए गए स्वीकृत उत्तर के लिए एक संशोधन करना होगा। परिवर्तन के लिए उपयोगकर्ता नाम के साथ दोहरे-उद्धरण की आवश्यकता होती है।

Example:

ALTER USER "username.lastname" WITH PASSWORD 'password'; 

वाजिब:

जब एक 'डबल कोट' का उपयोग करने के लिए और जब एक 'सिंगल कोटे' का उपयोग करने के लिए पोस्टग्रैस काफी उपयुक्त हो। आमतौर पर एक स्ट्रिंग प्रदान करते समय आप एक एकल उद्धरण का उपयोग करेंगे।

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