Postgres pgpass windows - не работает - PullRequest
       3

Postgres pgpass windows - не работает

7 голосов
/ 17 декабря 2010

DB: Postgres 9.0 Клиент: Windows 7 Server Windows 2008, 64bit

Я пытаюсь удаленно подключиться к экземпляру postgres для выполнения pg_dump на моем локальном компьютере.

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

Я следовал приведенным здесь инструкциям:

http://www.postgresql.org/docs/current/static/libpq-pgpass.html

, но он не работает.

Напомним, я создал файл на сервере: C:/Users/postgres/AppData/postgresql/pgpass.conf, где postgresql - пользователь БД.

Файл содержит одну строку со следующими данными:

\*:5432:\*postgres:[mypassword]

Я также пытался заменить каждый * на [localhost|myip] и [mydatabasename] соответственно.

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

pg_dump -h <myip> -U postgres -w [mydbname] > [mylocaldumpfile]

Я предполагаю, что мне нужно предоставить переключатель -w, чтобы игнорировать запрос пароля, после чего он должен выглядеть в каталоге AppData на сервере.

Просто возвращается:

Ошибка подключения к базе данных: fe_sendauth: пароль не указан.

Любые идеи приветствуются.

В качестве обходного пути, если есть способ, которым я могу сообщить пакетный файл Windowsна моем клиентском компьютере, чтобы ввести пароль в приглашении postgres, это также сработает.

Спасибо.

Ответы [ 5 ]

6 голосов
/ 07 марта 2012

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

Используйте командную строку

cd %appdata%
mkdir postgresql
cd postgresql
notepad pgpass.conf

внутри pgpass.conf, вставьте строку подключения (*:5432:*postgres:[mypassword]) и сохраните файл.Для подключения к postgres используйте:

psql/pg_dump -U <username> -h <host> -w <other params you want to use>
6 голосов
/ 08 августа 2011

Я решил аналогичную проблему (только в Linux), чтобы использовать IP-адрес в pgpass и psql.

.pgpass

127.0.0.1:5432:db:dbuser:123

psql params

psql -d db -U dbuser -h 127.0.0.1 -w

Config pg_hba с настройками по умолчанию:

# IPv4 local connections:
84 host    all         all         127.0.0.1/32          md5
3 голосов
/ 25 января 2017

Я получил его для работы со следующим:

pgpass.conf:

127.0.0.1:5432:*:username:password

Однако, он хранится здесь:

C:\Users\<user>\AppData\Roaming\postgresql

по какой-то причине на предыдущей итерации Postgres база данных сгенерировала файл pgpass и сохранила его там.Я столкнулся с той же проблемой, что и у вас, переместил ее в этот каталог, и она сработала.Хотя я не уверен, почему.

Тогда все, что вам нужно сделать, это:

pg_dump -h myip mydb > mylocaldumpfile

... убедиться, что myip и ip в pgpass.confидентичны.В противном случае вам будет предложено ввести пароль.

3 голосов
/ 15 января 2017

У меня была похожая проблема, которую мне не удалось решить - я не смог заставить скрипт распознавать файл pgpass.conf.Однако я использовал обходной путь установки переменной среды PGPASSWORD в используемом мной пакетном файле (PostgreSQL 9.6).

Внутри пакетного файла:

SET PGPASSWORD=<<password>> pg_dump.exe -h <<host>> -p <<port>> -U <<user>> -Fc -b -v -f <<output file path>> <<database>>

0 голосов
/ 09 июля 2013

Вы можете использовать pgAdmin III для хранения пароля (в свойствах сервера).Эта операция автоматически создает правильный файл pgpass.conf.Затем вы можете запланировать задачу для запуска простого пакетного файла, который будет выглядеть так:

"C:\path\to\pg_dump.exe" -U <user> -w <database> > C:\path\to\database.backup

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...