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.
źródło
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łopostgres
użytkownika.Odpowiedzi:
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!
źródło
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
dbname
coś zwanegoName
pgadmin. 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 ustawionapostgres
?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
źródło
Uruchom następujące polecenie, aby uzyskać poświadczenia bazy danych z Heroku:
Następnie możesz użyć narzędzia GUI, takiego jak PG Commander lub PGAdmin, aby połączyć się z bazą danych.
źródło