2013-08-16 2 views
2

Я пишу скрипт Ruby, который использует жемчужину PG для настройки подключения к базе данных и отправки файлов. Я структурирую его, чтобы принимать переменные для имени хоста, имени пользователя, имени базы данных и порта. В сценарии оболочки, который я написал для управления некоторыми сопутствующими задачами, я полагаюсь на пароль, хранящийся в ~/.pgpass, вместо того, чтобы пользователь вводил пароль для psql, потому что есть много транзакций, и иногда ввод пароля может завершиться без видимых причин (и он всасывает его в 20 раз).Использует ли PG Ruby Gem pgpass при настройке соединения PostgreSQL?

Будет ли доступ PG к тому же источнику, если пароль явно не указан? По соглашению, я включил пароль в файл, но, поскольку он перенаправляется на внутренне доступное репо, я бы предпочел не иметь эту информацию в моем файле. Я пытаюсь проверить функциональность сейчас, но задавался вопросом, знает ли кто-нибудь из сообщества SO ответ на этот вопрос. Если PG не имеет доступа к файлу .pgpass, существует ли способ ссылаться на переменную и записывать ее в файл, не запрашивая у пользователя пароль?

Заранее за вашу помощь.

ответ

3

Да, он будет использовать ~/.pgpass, как и любой интерфейс, основанный на libpq, клиентской библиотеке C PostgreSQL.

Однако хорошей альтернативой для отсутствия пароля в файле является его наличие в переменной окружения PGPASSWORD. Если вы установите это в скрипте, он будет унаследован каждой программой, которую он вызывает.

PGPASSWORD, когда set будет использоваться как пароль для любого соединения libpq, что означает большинство программ, которые подключаются к PostgreSQL.