Как подключиться к postgresql по URL

Я задал более ранний вопрос, на который не получил ответов.

В основном я получаю сообщение об ошибке invalid database url, когда пытаюсь сделать heroku db:push.

Я решил, что могу попробовать явно указать URL-адрес базы данных.

Я пытался:

heroku db:push postgres://postgres@localhost/myrailsdb

Но это дало ошибку:

Failed to connect to database:
  Sequel::DatabaseConnectionError -> PGError fe_sendauth: no password supplied

Каков формат предоставления имени пользователя и пароля?


person Omnipresent    schedule 30.01.2010    source источник


Ответы (5)


Попробуйте heroku db:push postgres://username:password@localhost/myrailsdb.

person Håvard S    schedule 30.01.2010
comment
что делать, если у вашего локального пользователя БД нет пароля? - person mkirk; 15.11.2011
comment
Просто скиньте пароль, т.е. db push postgres://username@localhost/myrailsdb - person Håvard S; 16.11.2011
comment
Если пароль не указан, это выдаст ошибку «Не удалось подключиться к базе данных»: Sequel::DatabaseConnectionError -> PGError fe_sendauth: пароль не указан - person user181677; 03.02.2012
comment
Вы также можете добавить параметры запроса в конце, чтобы указать дополнительные атрибуты, например. ?pool=5. В частности, для Ruby on Rails любые атрибуты, указанные в DATABASE_URL, переопределяют атрибуты, указанные в config/database.yml. См.: edgeguides.rubyonrails.org/ - person user2490003; 01.02.2019

Вот как это сделать в скрипте Ruby:

# Connect to database.
uri = URI.parse(ENV['DATABASE_URL'])
postgres = PG.connect(uri.hostname, uri.port, nil, nil, uri.path[1..-1], uri.user, uri.password)

# List all tables.
tables = postgres.exec('SELECT * FROM pg_catalog.pg_tables')
tables.num_tuples.times do |i|
  p tables[i]
end
person ma11hew28    schedule 04.03.2014
comment
Каков ваш импорт/требования? - person Nick; 24.10.2014

согласно документации

postgresql://[user[:password]@][netloc][:port][/dbname][?param1=value1&...]

Примеры

postgresql://
postgresql://localhost
postgresql://localhost:5432
postgresql://localhost/mydb
postgresql://user@localhost
postgresql://user:secret@localhost
postgresql://other@localhost/otherdb?connect_timeout=10&application_name=myapp
postgresql://localhost/mydb?user=other&password=secret
person Toumi    schedule 01.12.2018
comment
postgresql://localhost/mydb?user=other&password=secret, похоже, не использует указанный пароль. Работает только postgresql://user:secret@localhost. - person gucki; 17.07.2020

Отредактируйте файл конфигурации postgresql (pg_hba.conf) и измените метод типа «host» на «trust». Но имейте в виду, что это небезопасно.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 md5

Перезапустите сервер postgresql и повторно запустите команду

$ heroku db:push postgres://postgres@localhost/myrailsdb

Вот ссылка на мой ответ: https://stackoverflow.com/a/7667344/181677

person user181677    schedule 03.02.2012
comment
где находится файл pg_hba.conf? - person kibaekr; 25.06.2012
comment
собственно, нашел. для Ubuntu, Debian/Ubuntu: /etc/postgresql/9.0/main/pg_hba.conf - person kibaekr; 25.06.2012
comment
что делать, если у меня ошибка pg_hba.conf на удаленном сервере (heroku)? Я ничего не могу там изменить, и изменение локального файла не имеет никакого значения, конечно - person Anna Leonenko; 06.04.2020

Heroku cli изменил команду.

heroku pg:push postgres://username:password@localhost/myrailsdb
person Harry Moreno    schedule 13.04.2015