Подключение pgAdmin3 к Postgres на Heroku

9

Я использую базу данных Heroku Postgres ( База данных ) в сочетании с приложением Django. Документы, которые ссылаются на дополнение, здесь . Я подумал, что это будет стоящий вопрос для сообщества, потому что Heroku предупредил своих пользователей сегодня, что он будет переносить все из надстройки общей базы данных, которая использовалась по умолчанию.

У меня возникли проблемы с подключением pgAdmin3 к базе данных.

В соответствии с инструкциями по ссылке выше, я получаю учетные данные базы данных с помощью следующей команды:

$ heroku pg:credentials HEROKU_POSTGRESQL_OLIVE

Я использую домашнюю установку 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).

Я нажимаю ввод, и 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пользователя.
Дезсо

Ответы:

6

Спасибо @araqnid в Stack Overflow за ответ здесь .

Цитируется дословно оттуда:

Откройте «Свойства» сервера Heroku в pgAdminIII и измените значение «Maintenance DB» на имя базы данных, к которой вы хотите подключиться. Настройка по умолчанию подходит для администраторов баз данных и других, которые могут подключаться к любой базе данных на сервере, но, очевидно, это не так в вашем случае.

Это сработало для меня!

похлопывание
источник
но это определили 1368 баз данных. даже если я
Сунил
3

FATAL: permission denied for database "postgres"указывает, что он пытается подключиться к базе данных postgres. Мы действительно не предоставляем такие привилегии. Вы можете подключиться к своей собственной базе данных, хотя, это должно быть хорошо. Вы можете доказать это, подключившись через PSI CLI.

Похоже, вы настраиваете героку 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

hgmnz
источник
1

Выполните следующую команду, чтобы получить учетные данные базы данных от Heroku:

heroku pg:credentials DATABASE_URL

Затем вы можете использовать графический инструмент, такой как PG Commander или PGAdmin, для подключения к БД.

hexinpeter
источник