Я подключаюсь к базе данных PostgreSQL 13.13, используя psql 13.14 на Mac. Я использую аутентификацию по сертификату клиента. Я установил переменные среды, включив правильные значения для PGSSLMODE, PGSSLROOTCERT, PGSSLCERT и PGSSLKEY.
Это означает, что мне нужно указать только хост, базу данных и пользователя в командной строке. Замечательно.
Но ключ SSL зашифрован, поэтому, когда я пытаюсь подключиться, psql запрашивает пароль ключа (обратите внимание, НЕ пароль пользователя БД, пароль для расшифровки ключа сертификата).
Я пробовал установить PGPASSWORD и PGSSLPASSWORD, пробовал добавить строку в ~/.pgpass, ничего из этого не помогло. Есть ли способ отправить пароль ключа SSL в psql, не вводя его? Я просмотрел документ env vars и документ файла паролей, но не увидел его.
Я спрашиваю, потому что, помимо того, что мне приходится время от времени вводить больше, из-за проблем со временем, я в конечном итоге ввожу пароль, и подсказка воспринимает его как команду, добавляя его в мою историю... Я бы лучше иметь где-нибудь файл, который либо является паролем, либо устанавливает переменную env для пароля, либо настраивает его один раз для входа в систему или что-то в этом роде.
Большое спасибо.

Не существует переменной среды для ключевой фразы SSL, возможно, по причине, которая послужила причиной предупреждения в документации о PGPASSWORD:
Использование этой переменной среды не рекомендуется по соображениям безопасности, поскольку некоторые операционные системы позволяют пользователям без полномочий root видеть переменные среды процесса через ps.
Что вы можете сделать, так это использовать ключевое слово sslpassword в строке подключения. Если вы не хотите вводить этот пароль снова и снова и не возражаете против хранения пароля в текстовом файле на диске, вы можете использовать файл службы подключения:
создайте файл .pg_service.conf в домашнем каталоге пользователя с содержимым
[myconn]
sslpassword=sömething_too_Ann0ying_to_type_every_time_you_connect
установите переменную среды PGSERVICE в myconn
Нет, это не сработает. Но вы можете иметь несколько разделов в служебном файле и изменять переменную среды PGSERVICE по мере необходимости.
Черт возьми, но спасибо. Поскольку вы помогаете, знаете ли вы, есть ли способ объявить переменные в служебном файле? Например, возможность использовать
sslcert=$PROD_CERTили что-то в этом роде? Я прочитал документ, экспериментировал, но пока безрезультатно. Еще раз большое спасибо.