ชื่อผู้ใช้ / รหัสผ่านของ superuser เริ่มต้นสำหรับ postgres หลังจากการติดตั้งใหม่คืออะไร


380

ฉันเพิ่งติดตั้ง postgres 8.4 บน Ubuntu 9.10 และมันไม่เคยขอให้ฉันสร้าง superuser มี superuser เริ่มต้นและรหัสผ่านหรือไม่ ถ้าไม่ฉันจะสร้างใหม่ได้อย่างไร


คำตอบ:


533

ข้อควรระวังคำตอบเกี่ยวกับการเปลี่ยนรหัสผ่าน UNIX สำหรับ "postgres" ถึง "$ sudo passwd postgres" ไม่เป็นที่ต้องการและอาจเป็นอันตรายได้ !

นี่คือเหตุผล: โดยค่าเริ่มต้นบัญชี UNIX "postgres" ถูกล็อคซึ่งหมายความว่าไม่สามารถเข้าสู่ระบบโดยใช้รหัสผ่าน หากคุณใช้ "sudo passwd postgres" บัญชีจะถูกปลดล็อคทันที ยิ่งไปกว่านั้นถ้าคุณตั้งรหัสผ่านเป็นสิ่งที่อ่อนแอเช่น "postgres" คุณจะได้รับอันตรายด้านความปลอดภัยที่ดี ตัวอย่างเช่นมีจำนวนบอทที่พยายามใช้ชื่อผู้ใช้ / คำสั่งผสม "postgres / postgres" เพื่อเข้าสู่ระบบ UNIX ของคุณ

สิ่งที่คุณควรทำคือทำตามคำตอบของChris James :

sudo -u postgres psql postgres

# \password postgres

Enter new password: 

อธิบายได้นิดหน่อย โดยปกติจะมีวิธีเริ่มต้นสองวิธีในการลงชื่อเข้าใช้เซิร์ฟเวอร์ PostgreSQL:

  1. โดยการเรียกใช้คำสั่ง "psql" เป็นผู้ใช้ระบบปฏิบัติการยูนิกซ์ (ที่เรียกว่า IDENT การตรวจสอบ / PEER) sudo -u postgres psqlเช่น: โปรดทราบว่าsudo -uจะไม่ปลดล็อกผู้ใช้ UNIX

  2. โดยการเชื่อมต่อ TCP / IP โดยใช้ชื่อผู้ใช้ / รหัสผ่านที่ได้รับการจัดการของ PostgreSQL (เรียกว่าการพิสูจน์ตัวตน TCP) (เช่นไม่ใช่รหัสผ่าน UNIX)

ดังนั้นคุณไม่ต้องการตั้งรหัสผ่านสำหรับบัญชี UNIX "postgres" ปล่อยให้ล็อคเป็นค่าเริ่มต้น

สิ่งที่แน่นอนสามารถเปลี่ยนแปลงได้ถ้าคุณกำหนดค่ามันแตกต่างจากการตั้งค่าเริ่มต้น ตัวอย่างเช่นหนึ่งสามารถซิงค์รหัสผ่าน PostgreSQL กับรหัสผ่าน UNIX และอนุญาตให้เข้าสู่ระบบในท้องถิ่นเท่านั้น นั่นจะเกินขอบเขตของคำถามนี้


11
ดังนั้นคุณจะล็อคผู้ใช้ postgres กลับมาได้อย่างไร
ultrajohn

3
@ultrajohn - ขึ้นอยู่กับการจัดจำหน่ายที่คุณใช้ แต่คุณสามารถแก้ไข / etc / passwd และใส่ * แทนรหัสผ่าน
lzap

3
/etc/shadowเป็นที่เก็บรหัสผ่าน @lzap
Gringo Suave

2
ขวาคุณสามารถตั้งค่า / sbin / nologin ใน / etc / passwd หรือใส่ * แทนรหัสผ่านใน / etc / shadow
lzap

34
passwd --lock postgres
Stéphane

166

ป้อนในบรรทัดคำสั่ง:

$ sudo -u postgres psql postgres
postgres=# \password postgres

คุณจะเห็น:

Enter new password: 
Enter it again:

7
นี่คือสิ่งที่จำเป็นในการใช้เครื่องมือเช่น pgadminIII (เมื่อตั้งค่าโปรไฟล์เซิร์ฟเวอร์) ทันทีหลังจากติดตั้ง Postgres เอง ขอบคุณ!
limist

64

คุณจัดการ postgres ผ่านผู้ใช้postgresดังนี้:

# su - postgres
$ createdb mydb
$ psql -s mydb
# create user someuser password 'somepassword';
# GRANT ALL PRIVILEGES ON DATABASE mydb TO someuser;

5
@ThierryLam คุณต้องรูทไปsuยังผู้ใช้ postgres โดยไม่ต้องป้อนรหัสผ่าน ในระบบส่วนใหญ่บัญชี Unix ของ Postgres จะถูกล็อค (ไม่มีรหัสผ่านจะใช้งานได้) ซึ่งหมายความว่าจะสามารถรูทได้เฉพาะsuกับบัญชีนั้น
voretaq7

2
ใช้แทนsudo su
reinierpost

8
ฉันต้องวิ่งsudo su - postgres: \
จิมชูเบิร์

3
@ Jim ชูเบิร์ต: sudo -u postgresคุณยังสามารถเรียกใช้
reinierpost

1
sudo -u postgres psql - สามารถใช้งานได้ในขั้นตอนเดียว
Ominus

21

ใน Windows ให้ทำดังต่อไปนี้ (สำคัญ: ใช้บัญชีผู้ดูแลระบบ Windows ):

  1. <PostgreSQL PATH>\data\pg_hba.confหลังจากการติดตั้งเปิด

  2. แก้ไขสองบรรทัดนี้และเปลี่ยน "md5" เป็น "trust":

    host all all 127.0.0.1/32 md5

    host all all ::1/128 md5

  3. เริ่มบริการ PostgreSQL ใหม่ (อาจไม่จำเป็น)

  4. (ไม่บังคับ) เปิดพรอมต์คำสั่งและเปลี่ยนรหัสเพจเป็น 1252:

    cmd.exe /c chcp 1252

  5. เข้าสู่ระบบ PostgreSQL จะต้องใช้รหัสผ่านที่ไม่ใช่รหัสผ่าน (สังเกตพารามิเตอร์ตัวพิมพ์ใหญ่ -U):

    psql -U postgres

  6. (ไม่บังคับแนะนำให้ใช้เพื่อเหตุผลด้านความปลอดภัย) เปลี่ยนpostgresรหัสผ่านของผู้ใช้:

    \password postgres

    และการเปลี่ยนแปลง "ไว้วางใจ" กลับไปที่ "md5" pg_hba.confใน


5

หากคุณพยายามเข้าถึงเชลล์ PostgreSQL คุณสามารถพิมพ์:

psql -U postgres my_database

my_databaseชื่อฐานข้อมูลของคุณอยู่ที่ไหน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.