Ошибка роли не существует при подключении к базе данных Heroku с помощью cli - PullRequest
0 голосов
/ 05 мая 2020

Я установил в своей системе Heroku cli и psql.

heroku/7.40.0 linux-x64 node-v12.16.2
psql (PostgreSQL) 12.2 (Ubuntu 12.2-4)

Я могу пройти аутентификацию через Heroku cli и опросить базу данных, прикрепленную к моему dyno:

$heroku pg:info --app something-something
=== DATABASE_URL
Plan:                  Hobby-basic
Status:                Available
Connections:           0/20
PG Version:            10.12
Created:               2018-11-30 11:08 UTC
Data Size:             55.8 MB
Tables:                18
Rows:                  66280/10000000 (In compliance)
Fork/Follow:           Unsupported
Rollback:              Unsupported
Continuous Protection: Off
Region:                Europe
Billing App:           something-something
Add-on:                postgresql-something-anumber

Когда я пытаюсь подключиться к базе данных с помощью cli, я получаю:

heroku pg:psql --app something-something
--> Connecting to postgresql-something-anumber
psql: error: could not connect to server: FATAL:  role "a-username" does not exist

Но имя пользователя существует и отображается в учетных данных для надстройки postgres. Эта база данных предназначена для хобби, но у меня такая же проблема с моими производственными базами данных.

У меня такая же проблема с подключением к базе данных, просто используя psql:

PGPASSWORD=my-password psql "dbname=the-db-name host=blahblah.compute.amazonaws.com user=a-username port=5432"

Я обнаружил что, если я создам необходимое имя пользователя и базы данных локально:

createuser -s a-username
createdb -U a-username a-username 
createdb -U a-username remote-dbname

, я могу затем подключиться:

heroku pg:psql --app something-something
--> Connecting to postgresql-something-anumber
psql (12.2 (Ubuntu 12.2-4))
Type "help" for help.

something-something::DATABASE=#

Однако его только кажется, что он подключается локально, несмотря на упоминание правильного имени надстройки , если I \ l, то я вижу только локальные базы данных, если I \ c remote-dbname, тогда я подключаюсь только к локальной базе данных, а \ dt ничего не перечисляет.

В документации Heroku беспечно приводится пример этого Simpleisti c используйте (без параметра --app) как:

heroku pg:psql
Connecting to HEROKU_POSTGRESQL_RED... done
psql (9.5.3, server 9.5.3)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

rd2lk8ev3jt5j50=> SELECT * FROM users;

Обновление 6 мая 10: 05

Если я перечисляю информацию о подключении при подключении таким образом IP-адрес подключения отображается как (адрес «127.0.0.1»):

heroku pg:psql --app something-something
--> Connecting to postgresql-something-anumber
psql (12.2 (Ubuntu 12.2-4))
Type "help" for help.

something-something::DATABASE=> \conninfo
You are connected to database "the-db-name" as user "a-username" on host "blahblah.compute.amazonaws.com" (address "127.0.0.1") at port "5432".

Если я запускаю запуск один раз в дино, а затем подключаюсь изнутри дино и получаю информацию о подключении, я получаю IP-адрес (адрес "10.120.37.18 5 "):

heroku run bash --app something-something
Running bash on ⬢ something-something... up, run.1203 (Free)
~ $ heroku pg:psql --app something-something
 ▸    heroku-cli: update available from 6.15.13-3dce47c to 6.99.0-ec9edad
--> Connecting to postgresql-something-anumber
psql (12.2 (Ubuntu 12.2-2.pgdg16.04+1), server 10.12 (Ubuntu 10.12-2.pgdg16.04+1))
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

something-something::DATABASE=> \conninfo
You are connected to database "the-db-name" as user "a-username" on host "blahblah.compute.amazonaws.com" (address "10.120.37.185") at port "5432".
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)

Мне все еще кажется, что я пропустил какой-то небольшой шаг настройки где-то, который знают все, кроме меня ....

...