ไม่มีผู้ใช้ Postgres?


92

ฉันเพิ่งติดตั้ง Postgres และได้รับการซ่อมแซมและการกำหนดค่าต่างๆเป็นเวลา 1-2 ชั่วโมง

ฉันติดขัดที่ไม่สามารถเปลี่ยนเป็นผู้ใช้ postgres ได้

$ su - postgres ให้ข้อผิดพลาดต่อไปนี้: su: unknown login: postgres

$ sudo -u postgres psql ให้ข้อผิดพลาดต่อไปนี้: sudo: unknown user: postgres

ความพยายามเหล่านี้เกิดขึ้นในฐานะผู้ใช้ปกติ ลองใช้ในฐานะรูทก็ได้ผลลัพธ์เหมือนกัน ฉันได้ติดตั้ง postgres ผ่าน Homebrew บน OS X และได้อ่านคำแนะนำหลายครั้ง


คุณแค่พยายามเรียกใช้ psql หรือไม่?
danielM

ใช่ฉันต้องการเรียกใช้ในฐานะpostgresผู้ใช้ที่เหมาะสม
krystah

ใน Mac OS X บางรสชาติด้วยวิธีการติดตั้งบางอย่างฉันคิดว่าผู้ใช้ถูกสร้างขึ้นpostgres_แทน จดขีดล่าง นอกจากนี้คุณแน่ใจหรือไม่ว่าคุณ (หรือผู้ติดตั้ง) สร้างอินสแตนซ์ PostgreSQL และเริ่มต้นฐานข้อมูลจริง ๆ ?
Craig Ringer

1
ฉันไม่สามารถเปลี่ยนเป็นpostgresผู้ใช้ได้ แก้ไขปัญหาหลังจากติดตั้งpostgresql-serverแพ็คเกจ
sergio 郝海东冠状病六四事件法轮功

คำตอบ:


89

psql: ล็อกอินด้วยชื่อผู้ใช้เริ่มต้นของฉัน

psql -U postgres: เข้าสู่ระบบฉันในฐานะผู้ใช้ postgres

Sudo ดูเหมือนจะไม่จำเป็นสำหรับฉัน

ฉันใช้ Postgres.app สำหรับฐานข้อมูล OS X postgres ของฉัน ช่วยขจัดความปวดหัวในการตรวจสอบให้แน่ใจว่าการติดตั้งใช้งานได้และเซิร์ฟเวอร์ฐานข้อมูลเปิดใช้งานอย่างถูกต้อง ตรวจสอบได้ที่นี่: http://postgresapp.com

แก้ไข: ให้เครดิตกับ @Erwin Brandstetter สำหรับการแก้ไขการใช้อาร์กิวเมนต์ของฉัน


8
ฉันติดตั้งโดยใช้ Brew และไม่ได้สร้างผู้ใช้ที่เรียกว่า postgres หรือ _postgres (เท่าที่ฉันเห็น) สิ่งนี้จึงล้มเหลวสำหรับฉัน โซลูชัน @kangkyu อธิบายและนำคุณผ่านประเด็นต่างๆ - สมมติว่าคุณไม่มีผู้ใช้ postgres แล้ว: psql postgresและpsql -d postgres.
notapatch

21

โดยpsql --helpเมื่อคุณไม่ได้ตั้งค่าตัวเลือกสำหรับชื่อฐานข้อมูล (ไม่มี-dตัวเลือก) มันจะเป็นชื่อผู้ใช้ของคุณถ้าคุณไม่ได้ทำ-Uชื่อผู้ใช้ฐานข้อมูลจะเป็นชื่อผู้ใช้ของคุณมากเกินไป ฯลฯ

แต่โดยinitdbคำสั่ง (เพื่อสร้างฐานข้อมูลแรก) มันไม่มีชื่อผู้ใช้ของคุณเป็นชื่อฐานข้อมูลใด ๆ postgresมันมีฐานข้อมูลชื่อ ฐานข้อมูลแรกจะถูกสร้างขึ้นโดยคำสั่ง initdb เสมอเมื่อพื้นที่จัดเก็บข้อมูลเริ่มต้น ฐานข้อมูลนี้เรียกว่า postgres

ดังนั้นหากคุณไม่มีฐานข้อมูลอื่นตั้งชื่อผู้ใช้ของคุณคุณต้องทำpsql -d postgresเพื่อให้คำสั่ง psql ทำงาน และดูเหมือนว่ามันจะให้-dตัวเลือกโดยค่าเริ่มต้นpsql postgresก็ใช้ได้เช่นกัน

หากคุณสร้างฐานข้อมูลอื่นชื่อเดียวกันกับชื่อผู้ใช้ของคุณ (ควรใช้ด้วยcreatedb) คุณสามารถสั่งได้psqlเท่านั้น และดูเหมือนว่าชื่อผู้ใช้ฐานข้อมูลแรกจะตั้งเป็นชื่อผู้ใช้เครื่องของคุณโดยชง

psql -d <first database name> -U <first database user name>

หรือ,

psql -d postgres -U <your machine username>
psql -d postgres

จะทำงานตามค่าเริ่มต้น


17

OS X มักจะนำหน้าชื่อบัญชีระบบด้วย "_"; คุณไม่ได้บอกว่าคุณใช้ OS X เวอร์ชันใด แต่อย่างน้อยใน 10.8 และ 10.9 ผู้ใช้ _postgres มีอยู่ในการติดตั้งเริ่มต้น โปรดทราบว่าคุณจะไม่สามารถเข้าsuสู่บัญชีนี้ได้ (ยกเว้นในฐานะรูท) เนื่องจากไม่มีรหัสผ่าน sudo -u _postgresในทางกลับกันควรทำงานได้ดี


ขอบคุณ! นี่คือคำตอบที่ฉันกำลังมองหา มีอะไรที่ฉันสามารถทำได้เพื่อเปลี่ยนชื่อผู้ใช้เป็น "postgres" หรือไม่ การเข้าสู่ระบบในฐานะผู้ใช้ _postgres นำไปสู่ ​​psql โดยบ่นว่าไม่มีผู้ใช้ "_postgres" ฉันกำลังพยายามกู้คืนอินสแตนซ์ postgres ที่สะอาดด้วยไฟล์สำรองจากฐานข้อมูลอื่น
Chris Reyes - he-him

1
@ChrisReyes การเปลี่ยนชื่อบัญชีระบบอาจทำลายส่วนประกอบของระบบที่ใช้งานได้ดังนั้นฉันขอแนะนำอย่างยิ่งให้ต่อต้านมัน คุณสามารถสร้างบัญชีผู้ใช้อื่นโดยใช้ชื่อ "postgres" และใช้สิ่งนั้นได้ แต่ถ้าฉันเข้าใจถูก (ซึ่งฉันอาจจะไม่) สิ่งที่คุณพบคือบัญชีผู้ใช้ในฐานข้อมูล postgresไม่มีชื่อ _postgres AIUI ชื่อบัญชีภายใน DB แยกจากชื่อบัญชีระบบดังนั้นจึงไม่ควรมีปัญหาในการรันอินสแตนซ์ DB ภายใต้บัญชีระบบ "_postgres" และเปิดฐานข้อมูลนั้นด้วยบัญชีฐานข้อมูล "postgres"
Gordon Davisson


4
psql -U postgres

ทำงานได้ดีสำหรับฉันในกรณีของชื่อ db: postgres & username: postgres ดังนั้นคุณไม่จำเป็นต้องเขียน sudo

และในกรณีอื่น ๆ คุณอาจลองใช้

psql -U yourdb postgres

ตามที่ระบุไว้ในความช่วยเหลือของ Postgres:

psql [OPTION]... [DBNAME [USERNAME]]

กรณีของฉัน: $ psql -U postgresสร้างเอาต์พุตpsql: FATAL: role "postgres" does not existแต่ใช้psql postgresงานได้
Frozen Flame

4

ฉันได้รับข้อผิดพลาดตรงเช่นเดียวกับ kryshah และsu - postgres sudo -u postgres psqlคำตอบของ DanielM ยังให้ข้อผิดพลาด

แสดงผลเมื่อตั้งค่าผิด

ตอบอย่างไรก็ตามจากความคิดเห็นของ przbabu

masi$ psql
psql: FATAL:  database "masi" does not exist
masi$ psql -U postgres
psql: FATAL:  role "postgres" does not exist
masi$ psql postgres
psql (9.4.1)
Type "help" for help.

ฉันคิดว่าส่วนหนึ่งของปัญหานี้อาจอยู่ในการตั้งค่าเจ้าของใน OSX

masi$ ls -al /Users/
total 0
drwxr-xr-x   7 root      admin  238 Jul  3 09:50 .
drwxr-xr-x  37 root      wheel 1326 Jul  2 19:02 ..
-rw-r--r--   1 root      wheel    0 Sep 10  2014 .localized
drwxrwxrwt   7 root      wheel  238 Apr  9 19:49 Shared
drwxr-xr-x   2 root      admin   68 Jul  3 09:50 postgres
drwxr-xr-x+ 71 masi      staff 2414 Jul  3 09:50 masi

แต่การทำจะช่วยให้sudo chown -R postgres:staff /Users/postgreschown: invalid user: ‘postgres:staff’

ในระยะสั้นนี่ไม่ใช่วิธีแก้ปัญหา ใช้เครื่องมือที่มีให้โดยการติดตั้ง postgres เพื่อสร้างผู้ใช้และฐานข้อมูล

เพื่อให้ได้การตั้งค่าและผลลัพธ์ที่ถูกต้อง

มีคำสั่งเฉพาะหลังจากการติดตั้ง postgres เพื่อเพิ่มผู้ใช้ใหม่ในระบบฐานข้อมูล หลังจาก initdb ให้รันสิ่งต่อไปนี้ตามที่อธิบายไว้ที่นี่

createuser --pwprompt postgres
createdb -Opostgres -Eutf8 masi_development
psql -U postgres -W masi_development

เพื่อหลีกเลี่ยงการร้องขอรหัสผ่านทุกครั้งที่คุณมีสามทางเลือกตามที่อธิบายไว้ที่นี่


2

สำหรับฉันนี่คือวิธีแก้ปัญหาบน macOS ติดตั้ง psql ใหม่

brew install postgres

เริ่มเซิร์ฟเวอร์ PostgreSQL

pg_ctl -D /usr/local/var/postgres start

เริ่มต้น DB

initdb /usr/local/var/postgres

หากคำสั่งนี้แสดงข้อผิดพลาด rm ไฟล์ฐานข้อมูลเก่าและรันคำสั่งด้านบนอีกครั้ง

rm -r /usr/local/var/postgres

สร้างฐานข้อมูลใหม่

createdb postgres_test
psql -W postegres_test

คุณจะเข้าสู่ฐานข้อมูลนี้และสามารถสร้างผู้ใช้ที่นี่เพื่อเข้าสู่ระบบ


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