เชื่อมต่อ pgAdmin3 กับ Postgres บน Heroku


9

ฉันใช้งานฐานข้อมูล Heroku Postgres ( ฐานข้อมูล ) ร่วมกับแอพ Django เอกสารที่อ้างถึง Add-on อยู่ที่นี่ ฉันคิดว่านี่เป็นคำถามที่คุ้มค่าสำหรับชุมชนเพราะ Heroku แจ้งเตือนผู้ใช้ในวันนี้ว่าจะย้ายข้อมูลทุกอย่างออกจาก Add-on ของฐานข้อมูลที่แชร์ซึ่งเคยเป็นค่าเริ่มต้น

ฉันมีปัญหาในการเชื่อมต่อ pgAdmin3 กับฐานข้อมูล

ตามคำแนะนำในลิงค์ด้านบนฉันคว้าข้อมูลประจำตัวของฐานข้อมูลด้วยคำสั่งต่อไปนี้:

$ heroku pg:credentials HEROKU_POSTGRESQL_OLIVE

ฉันใช้การติดตั้ง Homebrew ของ Postgresql บน Mac OSX

ในระหว่างนี้ฉันมี:

  • เปิด SSL ใน pg_postgresql.conf ของฉัน
  • เพิ่มการตั้งค่า: listen_addresses = '*'
  • และเพิ่ม host all all 0.0.0.0/0 md5
  • และรีสตาร์ทเซิร์ฟเวอร์ postgres ของฉัน

แล้วผมไป pgAdmin3 File > Add Serverและเลือก

ฉันป้อนข้อมูลรับรองโดย Heroku ดังต่อไปนี้ (ชื่อแรกคือชื่อหนังสือรับรอง Heroku ที่สองคือชื่อฟิลด์ pgAdmin):

ในแท็บ "คุณสมบัติ":

  • dbname เป็นชื่อ;
  • โฮสต์เข้าสู่โฮสต์;
  • พอร์ตเข้าสู่พอร์ต;
  • ฉันปล่อยให้ฟิลด์ pgAdmin สำหรับ "ฐานข้อมูลการบำรุงรักษา" ว่างเปล่า;
  • ผู้ใช้ในชื่อผู้ใช้;
  • รหัสผ่านเป็นรหัสผ่าน;

ในแท็บ SSL:

  • ฉันมีช่องสำหรับ SSL ฉันเลือก "ต้องการ" (ตามคำแนะนำของ Heroku)

ฉันกด Enter และ pgAdmin คิดแล้วโยนข้อผิดพลาดดังนี้

An error has occurred:

Error connecting to the server: FATAL: permission denied for database "postgres"
DETAIL: User does not have CONNECT privilege.

ไม่แน่ใจว่าจะทำอย่างไรในจุดนี้ จะขอบคุณพอยน์เตอร์ใด ๆ


pgadmin.org/docs/1.8/connect.htmlพูดว่า: The maintenance DB field is used to specify the initial database that pgAdmin connects to, and that will be expected to have the pgAgent schema and adminpack objects installed (both optional). On PostgreSQL 8.1 and above, the maintenance DB is normally called ‘postgres’- และนั่นคือสิ่งที่ pgAdmin พยายามเชื่อมต่อ ระบุรหัสผ่านของpostgresผู้ใช้
dezso

คำตอบ:


6

ขอขอบคุณที่ @araqnid ในกองมากเกินสำหรับคำตอบที่นี่

อ้างถึงคำต่อคำจากที่นั่น:

เปิด "คุณสมบัติ" ของเซิร์ฟเวอร์ Heroku ใน pgAdminIII และเปลี่ยนค่า "Maintenance DB" เป็นชื่อของฐานข้อมูลที่คุณต้องการเชื่อมต่อ การตั้งค่าเริ่มต้นเหมาะสำหรับ DBA และผู้ที่สามารถเชื่อมต่อกับฐานข้อมูลใด ๆ บนเซิร์ฟเวอร์ แต่ดูเหมือนจะไม่เป็นจริงในกรณีของคุณ

สิ่งนี้ได้ผลสำหรับฉัน!


แต่สิ่งนี้ opned ฐานข้อมูล 1368 แม้ว่าฉันได้เพิ่ม DB การบำรุงรักษาเป็นชื่อฐานข้อมูลของฉัน
Sunil Garg

3

FATAL: permission denied for database "postgres"ระบุว่ากำลังพยายามเชื่อมต่อกับฐานข้อมูล postgres เราไม่ได้ให้สิทธิพิเศษเช่นนั้น คุณสามารถเชื่อมต่อกับฐานข้อมูลของคุณเองได้ คุณสามารถพิสูจน์ได้โดยเชื่อมต่อผ่าน psql CLI

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

ฉันไม่ใช่ผู้ใช้ pgadmin แต่เพียงค้นหาเอกสารที่พบ [1] ที่ระบุต่อไปนี้:

The maintenance DB field is used to specify the initial database that pgAdmin connects to.

ลองดูไหม

[1] http://www.pgadmin.org/docs/dev/connect.html


1

เรียกใช้คำสั่งต่อไปนี้เพื่อรับข้อมูลรับรองฐานข้อมูลจาก Heroku:

heroku pg:credentials DATABASE_URL

จากนั้นคุณสามารถใช้เครื่องมือ GUI เช่น PG Commander หรือ PGAdmin เพื่อเชื่อมต่อกับฐานข้อมูล

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