33.15. Переменные окружения

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

  • PGHOST действует так же, как параметр соединения host.

  • PGHOSTADDR действует так же, как параметр соединения hostaddr. Эту переменную можно задать вместо или вместе с PGHOST для предотвращения поиска адреса в DNS.

  • PGPORT действует так же, как параметр соединения port.

  • PGDATABASE действует так же, как параметр соединения dbname.

  • PGUSER действует так же, как параметр соединения user.

  • PGPASSWORD действует так же, как параметр соединения password. Использовать эту переменную окружения не рекомендуется по соображениям безопасности, так как в некоторых операционных системах непривилегированные пользователи могут видеть переменные окружения процессов в выводе ps; вместо этого лучше использовать файл паролей (см. Раздел 33.16).

  • PGPASSFILE действует так же, как параметр соединения passfile.

  • PGCHANNELBINDING действует так же, как параметр соединения channel_binding.

  • PGSERVICE действует так же, как параметр соединения service.

  • PGSERVICEFILE задаёт имя личного файла пользователя с параметрами подключения к службам (см. Раздел 33.17). По умолчанию применяется имя файла ~/.pg_service.conf (или %APPDATA%\postgresql\.pg_service.conf в Microsoft Windows).

  • PGOPTIONS действует так же, как параметр соединения options.

  • PGAPPNAME действует так же, как параметр соединения application_name.

  • PGSSLMODE действует так же, как параметр соединения sslmode.

  • PGREQUIRESSL действует так же, как параметр соединения requiressl. Эта переменная окружения утратила актуальность с появлением переменной PGSSLMODE; если установить обе переменные, значение данной не возымеет эффекта.

  • PGSSLCOMPRESSION действует так же, как параметр соединения sslcompression.

  • PGSSLCERT действует так же, как параметр соединения sslcert.

  • PGSSLKEY действует так же, как параметр соединения sslkey.

  • PGSSLROOTCERT действует так же, как параметр соединения sslrootcert.

  • PGSSLCRL действует так же, как параметр соединения sslcrl.

  • PGSSLCRLDIR действует так же, как параметр соединения sslcrldir.

  • PGSSLSNI действует так же, как параметр соединения sslsni.

  • PGREQUIREPEER действует так же, как параметр соединения requirepeer.

  • PGSSLMINPROTOCOLVERSION действует так же, как параметр соединения ssl_min_protocol_version.

  • PGSSLMAXPROTOCOLVERSION действует так же, как параметр соединения ssl_max_protocol_version.

  • PGGSSENCMODE действует так же, как параметр соединения gssencmode.

  • PGKRBSRVNAME действует так же, как параметр соединения krbsrvname.

  • PGGSSLIB действует так же, как параметр соединения gsslib.

  • PGCONNECT_TIMEOUT действует так же, как параметр соединения connect_timeout.

  • PGCLIENTENCODING действует так же, как параметр соединения client_encoding.

  • PGTARGETSESSIONATTRS действует так же, как параметр соединения target_session_attrs.

Следующие переменные окружения позволяют задать поведение по умолчанию для каждого отдельного сеанса Postgres Pro. (См. также описание команд ALTER ROLE и ALTER DATABASE, позволяющих установить поведение по умолчанию для отдельного пользователя или отдельной базы.)

  • PGDATESTYLE устанавливает стиль представления даты/времени по умолчанию. (Равносильно SET datestyle TO ....)

  • PGTZ устанавливает часовой пояс по умолчанию. (Равносильно SET timezone TO ....)

  • PGGEQO устанавливает режим по умолчанию для генетического оптимизатора запросов. (Равносильно SET geqo TO ....)

Информацию о корректных значениях этих переменных окружения можно найти в описании SQL-команды SET.

Следующие переменные среды определяют внутреннее поведение libpq; они переопределяют встроенные значения.

  • PGSYSCONFDIR задаёт каталог, в котором содержится файл pg_service.conf, а в будущем он может содержать и другие общесистемные файлы конфигурации.

  • PGLOCALEDIR задаёт каталог, содержащий файлы locale, предназначенные для перевода сообщений.

33.15. Environment Variables

The following environment variables can be used to select default connection parameter values, which will be used by PQconnectdb, PQsetdbLogin and PQsetdb if no value is directly specified by the calling code. These are useful to avoid hard-coding database connection information into simple client applications, for example.

  • PGHOST behaves the same as the host connection parameter.

  • PGHOSTADDR behaves the same as the hostaddr connection parameter. This can be set instead of or in addition to PGHOST to avoid DNS lookup overhead.

  • PGPORT behaves the same as the port connection parameter.

  • PGDATABASE behaves the same as the dbname connection parameter.

  • PGUSER behaves the same as the user connection parameter.

  • PGPASSWORD behaves the same as the password connection parameter. Use of this environment variable is not recommended for security reasons, as some operating systems allow non-root users to see process environment variables via ps; instead consider using a password file (see Section 33.16).

  • PGPASSFILE behaves the same as the passfile connection parameter.

  • PGCHANNELBINDING behaves the same as the channel_binding connection parameter.

  • PGSERVICE behaves the same as the service connection parameter.

  • PGSERVICEFILE specifies the name of the per-user connection service file (see Section 33.17). Defaults to ~/.pg_service.conf, or %APPDATA%\postgresql\.pg_service.conf on Microsoft Windows.

  • PGOPTIONS behaves the same as the options connection parameter.

  • PGAPPNAME behaves the same as the application_name connection parameter.

  • PGSSLMODE behaves the same as the sslmode connection parameter.

  • PGREQUIRESSL behaves the same as the requiressl connection parameter. This environment variable is deprecated in favor of the PGSSLMODE variable; setting both variables suppresses the effect of this one.

  • PGSSLCOMPRESSION behaves the same as the sslcompression connection parameter.

  • PGSSLCERT behaves the same as the sslcert connection parameter.

  • PGSSLKEY behaves the same as the sslkey connection parameter.

  • PGSSLROOTCERT behaves the same as the sslrootcert connection parameter.

  • PGSSLCRL behaves the same as the sslcrl connection parameter.

  • PGSSLCRLDIR behaves the same as the sslcrldir connection parameter.

  • PGSSLSNI behaves the same as the sslsni connection parameter.

  • PGREQUIREPEER behaves the same as the requirepeer connection parameter.

  • PGSSLMINPROTOCOLVERSION behaves the same as the ssl_min_protocol_version connection parameter.

  • PGSSLMAXPROTOCOLVERSION behaves the same as the ssl_max_protocol_version connection parameter.

  • PGGSSENCMODE behaves the same as the gssencmode connection parameter.

  • PGKRBSRVNAME behaves the same as the krbsrvname connection parameter.

  • PGGSSLIB behaves the same as the gsslib connection parameter.

  • PGCONNECT_TIMEOUT behaves the same as the connect_timeout connection parameter.

  • PGCLIENTENCODING behaves the same as the client_encoding connection parameter.

  • PGTARGETSESSIONATTRS behaves the same as the target_session_attrs connection parameter.

The following environment variables can be used to specify default behavior for each Postgres Pro session. (See also the ALTER ROLE and ALTER DATABASE commands for ways to set default behavior on a per-user or per-database basis.)

  • PGDATESTYLE sets the default style of date/time representation. (Equivalent to SET datestyle TO ....)

  • PGTZ sets the default time zone. (Equivalent to SET timezone TO ....)

  • PGGEQO sets the default mode for the genetic query optimizer. (Equivalent to SET geqo TO ....)

Refer to the SQL command SET for information on correct values for these environment variables.

The following environment variables determine internal behavior of libpq; they override compiled-in defaults.

  • PGSYSCONFDIR sets the directory containing the pg_service.conf file and in a future version possibly other system-wide configuration files.

  • PGLOCALEDIR sets the directory containing the locale files for message localization.

FAQ