Командная строка Windows PSQL: есть ли способ разрешить вход без пароля? - PullRequest
19 голосов
/ 02 июня 2011

Моя цель - иметь возможность запустить команду без запроса моего пароля.Есть ли способ добиться этого из командной строки Windows?В Linux я чувствую, что могу отправить пароль на стандартный вход или что-то еще, но я не уверен, смогу ли я сделать это для Windows.

Спасибо!

Ответы [ 6 ]

21 голосов
/ 02 июня 2011

Существует два способа:

  • Установить переменную среды PGPASSWORD, например, set PGPASSWORD=yoursecretpassword
  • Использовать файл пароля %APPDATA%\postgresql\pgpass.conf, как описано в документации

В файле паролей (мое местоположение: C: \ Users \ Grzesiek \ AppData \ Roaming \ postgresql \ pgpass.conf) используйте указанный в формате doc.Например, чтобы подключить базу данных postgres в качестве роли postgres на локальном сервере 5432, добавьте:

localhost:5432:postgres:postgres:12345

Я проверил это, и оно работает хорошо (для меня), но не используйте 127.0.0.1).

12 голосов
/ 02 июня 2011

Еще одна удобная опция (особенно, если ваш сервер PG работает на вашем собственном клиентском компьютере, и если это не создает никаких проблем с безопасностью для вас) - разрешить вход на сервер без пароля (режим аутентификации «доверие»).

Например, эта строка в pg_hba.conf (в вашем каталоге DATA, типичное расположение: C:\Program Files\PostgreSQL\9.0\data\) предоставляет доступ без пароля с вашего локального компьютера.

host     all     all     127.0.0.1/32    trust

Затем соединитесь с

  psql.exe -h 127.0.0.1 -U postgres -w [YOUR_DB_NAME]
2 голосов
/ 09 ноября 2017

Я знаю, что это старый вопрос, но для всех, кто похож на меня, трудно найти решение для окон.вставьте это в файл .bat, и это будет работать (по крайней мере, для меня это было сделано).смените директорию на каталог postres, установите переменную среды PHPASSWORD, выполните команду copy в файл csv, затем очистите переменную среды, затем вернитесь в корневой каталог.

cd C:\Program Files\PostgreSQL\9.5\bin\

set PGPASSWORD=yourpassword


psql -d databasename -U yourusername -w -c "\COPY (select * from yourtable) TO 'c:/Users/yourdirectory/yourcsvfilename.csv' DELIMITER '|' CSV HEADER;"

set PGPASSWORD=

cd c:\
0 голосов
/ 30 сентября 2018

Я понимаю, что этот вопрос уже немного устарел, но я считаю, что есть лучший способ безопасного и беспарольного входа в систему PostgreSQL в Windows - SSPI .

  1. Создайте учетную запись локального или доменного пользователя и логин PostgreSQL с тем же именем.

  2. В pg_ident.conf создайте сопоставление:

    # MAPNAME   SYSTEM-USERNAME      PG-USERNAME
    SSPI        username@AUTHORITY   loginname
    

    Замените username именем пользователя Windows (это sAMAccountNameатрибута для учетных записей домена) и замените AUTHORITY именем компьютера или коротким именем домена.Если вы не уверены, что использовать для AUTHORITY , проверьте файл журнала PostgreSQL.Для локальной учетной записи это будет имя компьютера;для учетной записи домена это, вероятно, короткое доменное имя.Наконец, замените loginname на имя входа PostgreSQL (чтобы избежать путаницы, я бы рекомендовал использовать одно и то же имя для username и loginname ).

  3. В pg_hba.conf разрешить вход в систему;например:

    # TYPE   DATABASE   USER        ADDRESS        METHOD
    host     all        loginname   127.0.0.1/32   sspi map=SSPI
    host     all        loginname   ::1/128        sspi map=SSPI
    
  4. Если учетная запись домена, установите для нее имя участника-службы;Например:

    setspn -S POSTGRES/serverfqdn username
    

Теперь вы можете войти в Windows, используя указанное имя пользователя, и запустить psql.exe и т. д. без ввода пароля.

0 голосов
/ 22 мая 2018

Я нашел другое полезное решение, которое работало для меня на этой ссылке . Он в основном устанавливает PGPASSWORD в начале вашей команды следующим образом:

PGPASSWORD=PASSWORD psql YOUR_CODE
0 голосов
/ 19 сентября 2016

Шаги:

Первая среда Var PGPASSWORD

C: \ Windows \ system32> set PGPASSWORD = clave

до

psql -d basededatos -U обычно

Готов

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