Łączenie pgAdmin3 z Postgres na Heroku


9

Korzystam z bazy danych Heroku Postgres ( bazy danych ) w połączeniu z aplikacją Django. Dokumenty odnoszące się do dodatku są tutaj . Pomyślałem, że byłoby to cenne pytanie dla społeczności, ponieważ Heroku ostrzegł dziś swoich użytkowników, że będzie migrować wszystko ze współdzielonego dodatku do bazy danych, który był domyślny.

Mam problem z połączeniem pgAdmin3 z bazą danych.

Zgodnie z instrukcjami w powyższym linku pobieram poświadczenia bazy danych za pomocą następującego polecenia:

$ heroku pg:credentials HEROKU_POSTGRESQL_OLIVE

Używam homebrew instalacji Postgresql na Mac OSX.

W międzyczasie mam:

  • włączony SSL w moim pg_postgresql.conf;
  • dodał ustawienie: listen_addresses = '*'
  • i dodał host all all 0.0.0.0/0 md5
  • i zrestartowałem mój serwer postgres.

Następnie idę do pgAdmin3 i wybieram File > Add Server.

Wprowadzam poświadczenia dostarczone przez Heroku w następujący sposób (pierwszy to nazwa poświadczenia Heroku, drugi to nazwa pola pgAdmin):

Na karcie „Właściwości”:

  • dbname na Name;
  • host w Host;
  • port do portu;
  • Pole „pgAdmin” pozostawiam puste „Baza danych konserwacji”;
  • użytkownik do nazwy użytkownika;
  • hasło do hasła;

Na karcie SSL:

  • W polu SSL wybieram „wymagaj” (zgodnie z instrukcjami Heroku).

Nacisnąłem Enter, a pgAdmin myśli, a następnie zgłasza błąd w następujący sposób:

An error has occurred:

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

Nie jestem pewien, co robić w tym momencie. Byłby wdzięczny za wszelkie wskazówki.


pgadmin.org/docs/1.8/connect.html mówi: 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’- i z tym pgAdmin próbował się połączyć. Podaj hasło postgresużytkownika.
dezso,

Odpowiedzi:


6

Dzięki @araqnid na Stack Overflow za odpowiedź tutaj .

Cytując dosłownie stamtąd:

Otwórz „Właściwości” serwera Heroku w pgAdminIII i zmień wartość „Maintenance DB” na nazwę bazy danych, z którą chcesz się połączyć. Domyślna konfiguracja jest odpowiednia dla DBA i innych, którzy mogą łączyć się z dowolną bazą danych na serwerze, ale najwyraźniej nie jest to prawdą w twoim przypadku.

To zadziałało dla mnie!


ale otworzyło to bazy danych 1368. nawet jeśli dodałem Maintenance DB jako moją nazwę db
Sunil Garg

3

FATAL: permission denied for database "postgres"wskazuje, że próbuje połączyć się z bazą danych Postgres. Rzeczywiście nie przyznajemy takich przywilejów. Możesz jednak połączyć się z własną bazą danych, co powinno być w porządku. Możesz to udowodnić, łącząc się za pomocą interfejsu psql CLI.

Wygląda na to, że ustawiasz heroku na dbnamecoś zwanego Namepgadmin. To wydaje się być „nazwą połączenia” dla tego, co tam tworzysz (coś arbitralnego, aby się do niej później odwołać), ale czy nie ma miejsca, w którym można ustawić rzeczywistą nazwę bazy danych, aby nie była domyślnie ustawiona postgres?

Nie jestem użytkownikiem pgadmin, ale po prostu szukam znalezionych dokumentów [1], które określają:

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

Czy mógłbyś tego spróbować?

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


1

Uruchom następujące polecenie, aby uzyskać poświadczenia bazy danych z Heroku:

heroku pg:credentials DATABASE_URL

Następnie możesz użyć narzędzia GUI, takiego jak PG Commander lub PGAdmin, aby połączyć się z bazą danych.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.