Menghubungkan pgAdmin3 ke Postgres di Heroku

9

Saya menjalankan database Heroku Postgres ( Database ) yang terkait dengan aplikasi Django. Dokumen yang merujuk pada add-on ada di sini . Saya pikir ini akan menjadi pertanyaan yang bermanfaat bagi komunitas karena Heroku mengingatkan penggunanya hari ini bahwa ia akan memigrasi semuanya dari add-on database bersama yang dulunya default.

Saya mengalami masalah saat menghubungkan pgAdmin3 ke Database.

Sesuai instruksi dalam tautan di atas, saya ambil kredensial Basis Data dengan perintah berikut:

$ heroku pg:credentials HEROKU_POSTGRESQL_OLIVE

Saya menggunakan instalasi postgresql homebrew di Mac OSX.

Sementara itu, saya punya:

  • mengaktifkan SSL di pg_postgresql.conf saya;
  • menambahkan pengaturan: listen_addresses = '*'
  • dan ditambahkan host all all 0.0.0.0/0 md5
  • dan me-restart server postgres saya.

Lalu saya pergi ke pgAdmin3 dan pilih File > Add Server.

Saya memasukkan kredensial yang disediakan oleh Heroku sebagai berikut (pertama adalah nama kredensial Heroku, kedua adalah nama bidang pgAdmin):

Di Tab "Properti":

  • dbname menjadi Name;
  • host ke Host;
  • port ke Port;
  • Saya meninggalkan bidang pgAdmin untuk "Database Pemeliharaan" kosong;
  • pengguna menjadi Username;
  • kata sandi menjadi kata sandi;

Di Tab SSL:

  • Saya bidang untuk SSL, saya pilih "wajib" (seperti yang diperintahkan oleh Heroku).

Saya menekan enter, dan pgAdmin berpikir, lalu melempar kesalahan sebagai berikut:

An error has occurred:

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

Tidak yakin apa yang harus dilakukan pada saat ini. Akan menghargai setiap petunjuk.

Menepuk
sumber
pgadmin.org/docs/1.8/connect.html mengatakan: 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’- dan itulah yang coba dihubungkan pgAdmin. Berikan kata sandi postgrespengguna.
dezso

Jawaban:

6

Terima kasih kepada @araqnid di Stack Overflow untuk jawabannya di sini .

Kutipan Verbatim dari sana:

Buka "Properties" dari server Heroku di pgAdminIII dan ubah nilai "Maintenance DB" menjadi nama database yang ingin Anda sambungkan. Pengaturan default cocok untuk DBAs et al yang dapat terhubung ke database di server, tetapi tampaknya itu tidak benar dalam kasus Anda.

Ini berhasil untuk saya!

Menepuk
sumber
tapi ini membuka 1368 basis data. bahkan jika saya telah menambahkan DB Pemeliharaan sebagai nama db saya
Sunil Garg
3

FATAL: permission denied for database "postgres"menunjukkan bahwa ia sedang mencoba untuk terhubung ke database postgres. Kami memang tidak memberikan hak istimewa seperti itu. Anda dapat terhubung ke database Anda sendiri, itu seharusnya baik-baik saja. Anda dapat membuktikannya dengan menghubungkan melalui CLI psql.

Tampaknya Anda menyetel heroku dbnameke sesuatu yang disebut Namepgadmin. Itu tampaknya menjadi "nama koneksi" untuk apa yang Anda buat di sana (sesuatu yang sewenang-wenang untuk merujuknya nanti), tetapi bukankah ada tempat di mana Anda dapat mengatur nama database yang sebenarnya, sehingga tidak default untuk itu postgres?

Saya bukan pengguna pgadmin, tetapi hanya mencari di sekitar dokumen yang ditemukan [1] yang menentukan yang berikut:

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

Bisakah Anda mencobanya?

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

hgmnz
sumber
1

Jalankan perintah berikut untuk mendapatkan kredensial basis data dari Heroku:

heroku pg:credentials DATABASE_URL

Kemudian Anda dapat menggunakan alat GUI seperti PG Commander atau PGAdmin untuk terhubung ke db.

hexinpeter
sumber