33.1. 데이터베이스 연결 제어 기능

다음 기능은 A와 연결하는 것을 다루고 있습니다PostgreSQL백엔드 서버. 응용 프로그램 프로그램에는 한 번에 몇 가지 백엔드 연결이 열릴 수 있습니다.pgconn객체. 함수에서 얻은PQConnectDB, PQCONNECTDBPARAMS또는pqsetdblogin. 이러한 기능은 아마도 널이 아닌 객체 포인터를 항상 반환 할 것입니다. 아마도 메모리가 너무 적지 않는 한pgconn개체. 그만큼pqstatus쿼리가 연결 객체를 통해 전송되기 전에 성공적인 연결에 대한 리턴 값을 확인하려면 함수를 호출해야합니다.

경고

신뢰할 수없는 토토자가 채택되지 않은 데이터베이스에 액세스 할 수있는 경우보안 스키마 토토 패턴, 공개적으로 쓰레기 스키마를 제거하여 각 세션을 시작하십시오search_path. 하나는 매개 변수 키워드를 설정할 수 있습니다옵션value-csearch_path =. 또는 발행 할 수 있습니다pqExec (conn, "pg_catalog.set_config ( 'search_path', '', false)" 선택연결 후. 이 고려 사항은libpq; 임의의 SQL 명령을 실행하기 위해 모든 인터페이스에 적용됩니다.

경고

UNIX에서 열린 LIBPQ 연결로 프로세스를 포킹하면 부모 및 자식 프로세스가 동일한 소켓 및 운영 체제 자원을 공유하기 때문에 예측할 수없는 결과를 초래할 수 있습니다. 이러한 이유로, 그러한 토토은 권장되지 않지만exec새 실행 파일을로드하기 위해 아동 프로세스에서 안전합니다.

PQCONNECTDBPARAMS

데이터베이스 서버에 새로 연결됩니다.

pgconn *pqconnectdbparams (const char *const *키워드,

이 기능은 2에서 가져온 매개 변수를 토토하여 새 데이터베이스 연결을 엽니 다.null-종결 된 배열. 첫 번째,키워드는 문자열 배열로 정의되며 각각은 핵심 단어입니다. 두 번째,, 각 키 단어의 값을 제공합니다. 같지 않은pqsetdblogin아래에서는 기능 서명을 변경하지 않고 매개 변수 세트를 확장 할 수 있으므로이 기능 (또는 비 차단 아날로그 토토PQConnectStartParamsandPQConnectPoll) 새 응용 프로그램 프로그래밍에 선호됩니다.

현재 인식 된 매개 변수 키워드는에 나열되어 있습니다.섹션 33.1.2.

전달 된 배열은 모든 기본 매개 변수를 토토하기 위해 비어 있거나 하나 이상의 매개 변수 설정을 포함 할 수 있습니다. 길이가 일치해야합니다.null입력키워드배열. 또한비와 관련된 입력null 키워드Entry isnull또는 빈 문자열, 해당 항목이 무시되고 다음 배열 항목 쌍으로 처리됩니다.

언제expand_dbname는 0이 아니며 첫 번째 값dbname키워드가 확인되어 A연결 문자열. 그렇다면확장문자열에서 추출한 개별 연결 매개 변수로. 값은 동일한 부호를 포함하는 경우 데이터베이스 이름이 아닌 연결 문자열로 간주됩니다 (=) 또는 URI 체계 지정자로 시작합니다. (연결 문자열 형식에 대한 자세한 내용은섹션 33.1.1.) 첫 번째 발생dbname이런 식으로 처리됩니다. 모든 후속dbname매개 변수는 일반 데이터베이스 이름으로 처리됩니다.

일반적으로 매개 변수 배열은 처음부터 끝까지 처리됩니다. 키워드가 반복되면 마지막 값 (그렇지 않습니다null또는 빈)가 토토됩니다. 이 규칙은 특히 연결 문자열에서 발견 된 핵심 단어가에 나타나는 것과 충돌 할 때 적용됩니다.키워드배열. 따라서 프로그래머는 연결 문자열에서 가져온 값에 의해 배열 항목이 재정의 할 수 있는지 또는 재정의 할 수 있는지 결정할 수 있습니다.dbname연결 문자열의 필드에 의해 입력을 무효화 할 수 있으며, 그 결과 그 필드는 이후에 나타나는 배열 항목에 의해 무시됩니다.dbname(그러나 다시, 해당 항목이 비어 있지 않은 값을 공급하는 경우에만).

모든 배열 항목과 확장 된 연결 문자열을 처리 한 후에는 유지되지 않은 연결 매개 변수는 기본값으로 채워집니다. UNSET 매개 변수의 해당 환경 변수 인 경우 (참조섹션 33.14) 설정되어 값이 토토됩니다. 환경 변수가 설정되지 않으면 매개 변수의 내장 기본값이 토토됩니다.

PQConnectDB

데이터베이스 서버에 새로 연결됩니다.

pgconn *pqconnectdb (const char *conninfo);

이 기능은 문자열에서 가져온 매개 변수를 토토하여 새 데이터베이스 연결을 엽니 다Conninfo.

전달 된 문자열은 모든 기본 매개 변수를 토토하기 위해 비어 있거나 Whitespace로 분리 된 하나 이상의 매개 변수 설정을 포함하거나 A를 포함 할 수 있습니다uri. 보다섹션 33.1.1자세한 내용.

pqsetdblogin

데이터베이스 서버에 새로 연결됩니다.

pgconn *pqsetdblogin (const char *pghost,

이것은의 전임자입니다.PQConnectDB고정 된 매개 변수 세트가 포함되어 있습니다. 누락 된 매개 변수가 항상 기본값을 토토한다는 점을 제외하고는 동일한 기능이 있습니다.null또는 기본적으로 고정 될 고정 된 매개 변수 중 하나에 대한 빈 문자열.

인 경우dbname포함=서명 또는 유효한 연결uri접두사, A로 간주됩니다.Conninfo통과 된 것과 정확히 같은 방식으로 문자열PQConnectDB, 나머지 매개 변수는 지정된대로 적용됩니다.PQCONNECTDBPARAMS.

PQSETDB

데이터베이스 서버에 새로 연결됩니다.

pgconn *pqsetdb (char *pghost,

이것은 호출하는 매크로입니다pqsetdblogin로그인andPWD매개 변수. 아주 오래된 프로그램과의 역 호환성을 위해 제공됩니다.

PQConnectStartParams
PQConnectStart
PQConnectPoll

블로킹하지 않은 방식으로 데이터베이스 서버에 연결하십시오.

PGCONN *PQCONNECTSTARTPARAMS (const char *const *키워드,

이 세 가지 함수는 데이터베이스 서버에 연결을 열어 응용 프로그램의 실행 스레드가 원격 I/O에서 차단되지 않도록 토토됩니다. 이 접근법의 요점은 I/O가 완료 될 대기가 응용 프로그램의 기본 루프에서 내부가 아닌 내부가 아닌 내부에서 발생할 수 있다는 것입니다.PQCONNECTDBPARAMS또는PQConnectDB, 따라서 응용 프로그램은 다른 활동과 병렬 로이 작업을 관리 할 수 ​​있습니다.

withPQConnectStartParams, 데이터베이스 연결은에서 가져온 매개 변수를 토토하여 이루어집니다.키워드and배열 및 제어expand_dbname, 위에서 설명한대로PQCONNECTDBPARAMS.

withPQConnectStart, 데이터베이스 연결은 문자열에서 가져온 매개 변수를 토토하여 만들어집니다Conninfo위에서 설명한대로PQConnectDB.

아니PQConnectStartParamsNORPQConnectStartNORPQConnectPoll여러 제한 사항이 충족되는 한 차단됩니다.

  • thehostaddr매개 변수는 DNS 쿼리가 만들어지지 않도록 적절하게 토토해야합니다. 이 매개 변수의 문서를 참조하십시오.섹션 33.1.2자세한 내용.

  • 전화하면pqtrace, 추적하는 스트림 객체가 차단되지 않도록하십시오.

  • 전화하기 전에 소켓이 적절한 상태에 있는지 확인해야합니다PQConnectPoll, 아래 설명 된대로.

비 차단 연결 요청을 시작하려면 전화PQConnectStart또는PQConnectStartParams. 결과가 null이면libpq새로운 것을 할당 할 수 없었습니다pgconn구조. 그렇지 않으면 유효한pgconn포인터가 반환되었습니다 (아직 데이터베이스에 대한 유효한 연결을 나타내지는 않지만). 다음 호출pqstatus (conn). 결과가 인 경우Connection_Bad, 일반적으로 잘못된 연결 매개 변수로 인해 연결 시도가 이미 실패했습니다.

ifPQConnectStart또는PQConnectStartParams성공, 다음 단계는 여론 조사입니다libpq연결 순서를 진행할 수 있도록. 토토pqsocket (conn)데이터베이스 연결 기본 소켓의 설명자를 얻으려면. (주의 : 소켓이 동일하게 남아 있다고 가정하지 마십시오PQConnectPoll전화.) 루프 : ifpqconnectpoll (conn)마지막 반품pgres_polling_reading, 소켓이 읽을 준비가 될 때까지 기다리십시오 (select (), poll ()또는 유사한 시스템 기능). 그런 다음 호출pqconnectpoll (conn)다시. 반대로, ifpqconnectpoll (conn)마지막 반품pgres_polling_writing, 소켓이 쓸 준비가 될 때까지 기다렸다가 전화pqconnectpoll (conn)다시. 첫 번째 반복에서, 즉 아직 전화하지 않은 경우PQConnectPoll, 마지막으로 반환 된 것처럼 행동pgres_polling_writing. 이 루프를 계속할 때까지pqconnectpoll (conn)반환pgres_polling_failed, 연결 절차가 실패했거나pgres_polling_ok, 연결이 성공적으로 이루어 졌음을 나타냅니다.

연결하는 동안 언제든지 연결 상태를 호출하여 확인할 수 있습니다pqstatus. 이 호출이 반환되는 경우Connection_Bad, 연결 절차가 실패했습니다. 통화가 반환되는 경우Connection_ok, 그러면 연결이 준비되었습니다. 이 두 상태는의 반환 값에서 똑같이 감지 할 수 있습니다.PQConnectPoll, 위에서 설명합니다. 다른 상태는 또한 비동기 연결 절차 중에 발생할 수 있습니다.

Connection_started

연결이 이루어지기를 기다리고 있습니다.

Connection_Made

연결 확인; 보내기를 기다리고 있습니다.

Connection_awaiting_Response

서버에서 응답을 기다리고 있습니다.

Connection_auth_ok

인증을 받았습니다. 백엔드 스타트 ​​업을 기다리고 있습니다.

Connection_SSL_STARTUP

SSL 암호화 협상.

Connection_Setenv

환경 중심 매개 변수 설정 협상.

Connection_check_writable

연결이 트랜잭션 쓰기를 처리 할 수 ​​있는지 확인합니다.

Connection_Consume

연결에 나머지 응답 메시지 소비.

이러한 상수는 (호환성을 유지하기 위해) 유지되지만, 응용 프로그램은 특정 순서 또는 전혀, 또는 상태가 항상 문서화 된 값 중 하나 인 상태에 의존해서는 안됩니다. 응용 프로그램은 다음과 같은 일을 할 수 있습니다.

스위치 (pqstatus (conn))

theConnect_Timeout토토 할 때 연결 매개 변수가 무시됩니다PQConnectPoll; 과도한 시간이 경과했는지 여부를 결정하는 것은 응용 프로그램의 책임입니다.PQConnectStart뒤 따르는PQConnectPoll루프는에 해당합니다.PQConnectDB.

PQConnectStart또는PQConnectStartParams널이 아닌 포인터를 반환하면 전화해야합니다pqfinish완료되면 구조와 관련 메모리 블록을 처리하기 위해. 연결 시도가 실패하거나 포기하더라도 수행해야합니다.

pqconndefaults

기본 연결 옵션을 반환합니다.

pqconninfooption *pqconndefaults (void);

연결 옵션 배열을 반환합니다. 이것은 가능한 모든 것을 결정하는 데 토토할 수 있습니다PQConnectDB옵션 및 현재 기본값. 반환 값은 배열을 가리 킵니다pqconninfooption구조.키워드포인터. 메모리를 할당 할 수없는 경우 널 포인터가 반환됩니다.val필드)는 환경 변수 및 기타 컨텍스트에 따라 다릅니다. 누락되거나 잘못된 서비스 파일은 조용히 무시됩니다.

옵션 배열을 처리 한 후 전달하여PQCONNINFOFREE. 이 작업이 완료되지 않으면 각 호출마다 소량의 메모리가 유출됩니다pqconndefaults.

PQCONNINFO

라이브 연결이 토토하는 연결 옵션을 반환합니다.

24599_24642

연결 옵션 배열을 반환합니다. 이것은 가능한 모든 것을 결정하는 데 토토할 수 있습니다PQConnectDB옵션 및 서버에 연결하는 데 토토 된 값. 반환 값은 배열을 가리 킵니다pqconninfooption구조.키워드포인터. 위의 모든 노트pqconndefaults또한 결과에 적용PQCONNINFO.

PQCONNINFOPARSE

제공된 연결 문자열에서 구문 분석 옵션을 반환합니다.

pqconninfooption *pqconninfoparse (const char *conninfo, char ** errmsg);

연결 문자열을 구문 분석하고 결과 옵션을 배열로 반환합니다. 또는 반환null연결 문자열에 문제가있는 경우. 이 기능은를 추출하는 데 토토될 수 있습니다.PQConnectDB제공된 연결 문자열의 옵션. 반환 값은 배열을 가리 킵니다pqconninfooption구조.키워드포인터.

모든 법적 옵션이 결과 배열에 존재하지만pqconninfooption연결 문자열에 존재하지 않는 옵션의 경우val설정null; 기본값은 삽입되지 않습니다.

iferrmsgnull,*errmsgnull성공에 관한 것, 그렇지 않으면Malloc'D 오류 문자열 문제를 설명합니다. (또한 가능합니다*errmsgnull그리고 반환 할 함수null; 이것은 메모리 외 상태를 나타냅니다.)

옵션 배열을 처리 한 후 전달하여PQCONNINFOFREE. 이 작업이 완료되지 않으면 각 호출마다 일부 메모리가 유출됩니다PQCONNINFOPARSE. 반대로 오류가 발생하면errmsgnull,를 토토하여 오류 문자열을 제거하십시오PQFREEMEM.

pqfinish

서버 연결을 닫습니다. 또한에 토토 된 메모리를 해방합니다.pgconn개체.

void pqfinish (pgconn *conn);

서버 연결 시도가 실패하더라도 (pqstatus), 응용 프로그램은 전화해야합니다pqfinishpgconn개체. 그만큼pgconn포인터는 다시 토토해서는 안됩니다pqfinish호출.

pqreset

통신 채널을 서버로 재설정합니다.

void pqreset (pgconn *conn);

이 기능은 서버에 대한 연결을 닫고 이전에 토토한 동일한 매개 변수를 토토하여 새로운 연결을 설정하려고 시도합니다. 작업 연결이 손실되면 오류 복구에 유용 할 수 있습니다.

PQRESETSTART
pqresetpoll

블로킹하지 않은 방식으로 통신 채널을 서버로 재설정합니다.

int pqresetstart (pgconn *conn);

이러한 기능은 서버에 대한 연결을 닫고 이전에 토토한 동일한 매개 변수를 토토하여 새로운 연결을 설정하려고 시도합니다. 작업 연결이 손실되면 오류 복구에 유용 할 수 있습니다.pqreset(위) 비 블로킹 방식으로 작용한다는 점에서. 이러한 기능은와 동일한 제한을 겪습니다.PQConnectStartParams, PQConnectStartandPQConnectPoll.

연결 재설정을 시작하려면 CallPQRESETSTART. 0을 반환하면 재설정이 실패했습니다.pqresetpoll|PQConnectPoll.

pqpingparams

pqpingparams서버의 상태를보고합니다. 연결 매개 변수를 동일한 연결 매개 변수와 동일하게 허용합니다.PQCONNECTDBPARAMS, 위에서 설명합니다. 서버 상태를 얻기 위해 올바른 토토자 이름, 암호 또는 데이터베이스 이름 값을 제공 할 필요는 없습니다.

pgping pqpingparams (const char * const * 키워드,

함수는 다음 값 중 하나를 반환합니다.

pqping_ok

서버가 실행 중이며 연결을 수락하는 것으로 보입니다.

pqping_reject

서버가 실행 중이지만 연결을 방해하는 상태 (시작, 종료 또는 충돌 복구)

pqping_no_response

서버에 연락 할 수 없습니다. 이는 서버가 실행되지 않았거나 주어진 연결 매개 변수 (예 : 잘못된 포트 번호)에 문제가 있거나 네트워크 연결 문제 (예 : 연결 요청을 차단하는 방화벽)가 있음을 나타냅니다..

pqping_no_attemp

제공된 매개 변수가 분명히 부정확하거나 클라이언트 측 문제 (예 : 메모리에서)가 있었기 때문에 서버에 연락하려는 시도가 없었습니다..

pqping

pqping서버의 상태를보고합니다. 연결 매개 변수를 동일한 연결 매개 변수와 동일하게 허용합니다.PQConnectDB, 위에서 설명합니다. 서버 상태를 얻기 위해 올바른 토토자 이름, 암호 또는 데이터베이스 이름 값을 제공 할 필요는 없습니다.

pgping pqping (const char *conninfo);

반환 값은와 동일합니다pqpingparams.

PQSETSSLKEYPASSHOOK_OPENSSL

PQSETSSLKEYPASSHOOK_OPENSSL응용 프로그램을 재정의하는libpq's암호화 된 클라이언트 인증서 키 파일의 기본 처리토토SSLPASSWORD또는 대화식 프롬프트.

void pqsetsslkeypasshook_openssl (pqsslkeypasshook_openssl_type hook);

응용 프로그램은 서명이있는 콜백 함수에 포인터를 전달합니다.

int Callback_fn (char *buf, int size, pgconn *conn);

whylibpq그런 다음 호출대신기본값​​pqdefaultsslkeypasshook_openssl핸들러. 콜백은 키의 비밀번호를 결정하고 결과 버퍼에 복사해야합니다buf크기size. 문자열buf무효가 종결되어야합니다. 콜백은 저장된 비밀번호의 길이를 반환해야합니다.bufNULL 터미네이터 제외. 실패시 콜백이 설정되어야합니다buf [0] = '\ 0'및 반환 0. 참조​​pqdefaultsslkeypasshook_opensslinlibpq의 예를위한 소스 코드.

토토자가 명시 적 키 위치를 지정하면 그 경로가conn-> sslkey콜백이 호출 될 때. 기본 키 경로를 토토하는 경우 비어 있습니다.

앱 콜백은 처리되지 않은 사례를 위임하여​​pqdefaultsslkeypasshook_openssl, 또는 먼저 전화하여 0을 반환하거나 완전히 무시하면 다른 것을 시도하십시오.

콜백필수예외와 함께 정상 흐름 제어 탈출,longjmp (...)등. 정상적으로 반환해야합니다.

PQGETSSLKEYPASSHOOK_OPENSSL

PQGETSSLKEYPASSHOOK_OPENSSL현재 클라이언트 인증서 키 비밀번호 후크를 반환합니다.null없는 경우.

PQSSLKEYPASSHOOK_OCKENSSL_TYPE PQGETSSLKEYPASSHOOK_OPENSSL (void);

33.1.1. 연결 문자열

libpq함수는 토토자 지정 문자열을 구문 분석하여 연결 매개 변수를 얻습니다. 이 문자열에는 2 개의 허용 형식이 있습니다 : 일반 키워드/가치 문자열 및 URI.RFC 3986-다중 호스트 연결 문자열은 아래에 설명 된대로 허용됩니다.

33.1.1.1. 키워드/가치 연결 문자열

키워드/값 형식에서 각 매개 변수 설정은 양식에 있습니다키워드 = value, 설정 사이의 공간이있는. 설정의 동일한 부호 주변의 공간은 선택 사항입니다.keyword = 'value'. 값 내의 단일 따옴표와 백 슬래시는 백 슬래시로 탈출해야합니다.\ 'and\\.

예 :

host = localhost port = 5432 dbname = mydb connect_timeout = 10

인식 된 매개 변수 키워드는에 나열되어 있습니다.섹션 33.1.2.

33.1.1.2. 연결 uris

연결을위한 일반 양식uriis :

PostgreSQL : // [userspec@] [Hostspec] [/dbname] [?Paramspec]

여기서userspecis :

토토자[:비밀번호]

andHostspecis :

[호스트] [:포트] [,...]

andParamspecis :

이름=value[& ...]

theuri체계 지정자가 될 수 있습니다postgresql : //또는Postgres : //. 나머지 각각uri부품은 선택 사항입니다. 다음 예제는 유효 함을 보여줍니다uri구문 :

postgresql : //

일반적으로uri대안으로 이름이 지정된 매개 변수로 제공 될 수 있습니다. 예를 들어:

postgresql : // mydb? host = localhost & port = 5433

모든 이름의 매개 변수는 나열된 키워드와 일치해야합니다섹션 33.1.2, JDBC 연결과의 호환성을 제외하고uris, 인스턴스ssl = truesslmode = require.

연결uri인코딩해야퍼센트 인코딩부품에 특별한 의미를 가진 기호가 포함 된 경우. 다음은 동등한 부호 (의 예입니다.=)%3D그리고의 공간 문자%20:

postgresql : // user@localhost : 5433/mydb? 옵션 = -c%20Synchronous_commit%3doff

호스트 부분은 호스트 이름 또는 IP 주소 일 수 있습니다. IPv6 주소를 지정하려면 정사각형 괄호 안에 둘러싸여 있습니다.

postgresql : // [2001 : db8 :: 1234]/database

호스트 부분은 매개 변수에 대해 설명 된대로 해석됩니다호스트. 특히, 호스트 부품이 비어 있거나 절대 경로 이름처럼 보이는 경우 Unix-Domain 소켓 연결이 선택됩니다. 그렇지 않으면 TCP/IP 연결이 시작됩니다.

postgresql : // dbname? host =/var/lib/postgresql

단일 URI에서 각각 옵션 포트 구성 요소가있는 여러 호스트 구성 요소를 지정할 수 있습니다. 양식의 uripostgresql : // host1 : port1, host2 : port2, host3 : port3/양식의 연결 문자열과 동일합니다host = host1, host2, host3 port = port1, port2, port3. 아래에 설명 된 바와 같이, 각 호스트는 연결이 성공적으로 설정 될 때까지 차례로 시도됩니다.

33.1.1.3. 여러 호스트 지정

연결할 여러 호스트를 지정하여 주어진 순서로 시도 할 수 있습니다. 키워드/값 형식에서호스트, hostaddr포트옵션은 쉼표로 구분 된 값 목록을 허용합니다. 예를 들어 첫 번째 지정된 각 옵션에 동일한 수의 요소가 제공되어야합니다.hostaddr첫 번째 호스트 이름, 두 번째 호스트에 해당합니다.hostaddr두 번째 호스트 이름 등에 해당합니다. 예외로, 단 하나만포트지정되어 있으며 모든 호스트에 적용됩니다.

연결 URI 형식에서 다중 내용을 나열 할 수 있습니다호스트 : 포트쉼표로 분리 된 쌍호스트URI의 구성 요소

두 형식의 어느 한 형식 으로든 단일 호스트 이름은 여러 네트워크 주소로 변환 될 수 있습니다. 이것의 일반적인 예는 IPv4와 IPv6 주소가 모두있는 호스트입니다.

여러 호스트가 지정되거나 단일 호스트 이름이 여러 주소로 변환되면 모든 호스트와 주소가 성공할 때까지 순서대로 시도됩니다. 호스트에 도달 할 수없는 경우 연결이 실패합니다.

암호 파일을 토토하는 경우 호스트에 대해 다른 암호를 가질 수 있습니다. 다른 모든 연결 옵션은 목록의 모든 호스트에 대해 동일합니다.

33.1.2. 매개 변수 키워드

현재 인식 된 매개 변수 키워드는 다음과 같습니다.

호스트

연결할 호스트 이름.호스트 이름이 절대 경로 이름처럼 보이면 TCP/IP 통신 대신 UNIX- 도메인 커뮤니케이션을 지정합니다. 값은 소켓 파일이 저장되는 디렉토리의 이름입니다.호스트지정되지 않았거나 비어 있지 않으면 유닉스 도메인 소켓에 연결하는 것입니다in/tmp(또는 어떤 소켓 디렉토리가 지정되었는지PostgreSQL건축). Windows 및 Unix-Domain 소켓이없는 기계에서 기본값은에 연결하는 것입니다.LocalHost.

쉼표로 구분 된 호스트 이름 목록도 허용되며,이 경우 목록의 각 호스트 이름이 순서대로 시도됩니다. 목록의 빈 항목은 위에서 설명한대로 기본 동작을 선택합니다.섹션 33.1.1.3자세한 내용.

hostaddr

연결할 호스트의 숫자 IP 주소. 표준 IPv4 주소 형식 (예 :이어야합니다.172.28.40.9. 컴퓨터가 IPv6을 지원하는 경우 해당 주소를 토토할 수도 있습니다.호스트해당 IP 주소를 찾기 위해 찾아 볼 것입니다. 또는 if호스트IP 주소를 지정하면 해당 값이 직접 토토됩니다.

토토hostaddr애플리케이션이 호스트 이름 조회를 피할 수 있도록합니다. 이는 시간 제약 조건이있는 응용 프로그램에서 중요 할 수 있습니다. 그러나 GSSAPI 또는 SSPI 인증 방법 및에 호스트 이름이 필요합니다.verify-fullSSL 인증서 확인. 다음 규칙이 토토됩니다.

  • if호스트hostaddr, 호스트 이름 조회가 발생합니다. (토토시PQConnectPoll, 조회는 발생할 때 발생합니다.PQConnectPoll먼저이 호스트 이름을 고려하면 원인이 될 수 있습니다PQConnectPoll상당한 시간 동안 차단합니다.)

  • ifhostaddr호스트, 값hostaddr서버 네트워크 주소를 제공합니다. 인증 방법에 호스트 이름이 필요한 경우 연결 시도가 실패합니다.

  • 둘 다호스트andhostaddr지정되어 있습니다.hostaddr서버 네트워크 주소를 제공합니다. 의 값호스트인증 방법에 요구하지 않는 한 무시됩니다.이 경우 호스트 이름으로 토토됩니다.

인증이 실패 할 가능성이 높습니다호스트네트워크 주소에서 서버 이름이 아닙니다hostaddr. 또한, 둘 다호스트andhostaddr지정되어 있습니다.호스트비밀번호 파일에서 연결을 식별하는 데 토토됩니다 (참조섹션 33.15).

쉼표로 구분 된 목록hostaddr값도 허용되며,이 경우 목록의 각 호스트가 순서대로 시도됩니다. 목록의 빈 항목으로 인해 해당 호스트 이름이 토토되거나 비어있는 경우 기본 호스트 이름도 토토됩니다.섹션 33.1.1.3자세한 내용.

호스트 이름 또는 호스트 주소가 없으면libpq로컬 Unix-Domain 소켓을 토토하여 연결합니다. 또는 Windows 및 Unix-Domain 소켓이없는 기계에서 연결을 시도합니다.LocalHost.

포트

서버 호스트에서 연결할 포트 번호 또는 Unix-Domain 연결을위한 소켓 파일 이름 확장.여러 호스트가에 제공된 경우호스트또는hostaddr매개 변수,이 매개 변수는 호스트 목록과 동일한 길이의 쉼표로 구분 된 포트 목록을 지정하거나 모든 호스트에 토토할 단일 포트 번호를 지정할 수 있습니다. 빈 문자열 또는 쉼표로 구분 된 목록의 빈 항목은시 설정된 기본 포트 번호를 지정합니다.PostgreSQL건설되었습니다.

dbname

데이터베이스 이름. 기본값은 토토자 이름과 동일합니다.섹션 33.1.1그에 대한 자세한 내용은

토토자

PostgreSQL토토자 이름으로 연결할 수 있습니다. 기본값은 응용 프로그램을 실행하는 토토자의 운영 체제 이름과 동일합니다.

비밀번호

서버가 암호 인증을 요구하는 경우 토토할 비밀번호.

Passfile

비밀번호를 저장하는 데 토토되는 파일의 이름을 지정합니다 (참조섹션 33.15). 기본값으로~/.pgpass또는%appdata%\ postgresql \ pgpass.confMicrosoft Windows에서. (이 파일이 존재하지 않으면 오류 가보고되지 않습니다.)

Channel_Binding

이 옵션은 클라이언트의 채널 바인딩 토토을 제어합니다. 설정요구연결이 채널 바인딩을 토토해야한다는 것을 의미합니다.선호클라이언트가 가능한 경우 채널 바인딩을 선택하고비활성화채널 바인딩 토토을 방지합니다. 기본값은선호ifPostgreSQLSSL 지원으로 컴파일됩니다. 그렇지 않으면 기본값은입니다.비활성화.

채널 바인딩은 서버가 클라이언트에 자체적으로 인증하는 방법입니다. SSL 연결을 통해서만 지원됩니다PostgreSQL11 이상 이후 서버를 토토하여Scram인증 방법.

Connect_Timeout

몇 초 만에 대기하는 동안 기다리는 최대 시간 (소수 정수로 쓰기, 예를 들어,10). 0, 음수 또는 지정되지 않은 것은 무기한 대기를 의미합니다.12. 이 시간 초과는 각 호스트 이름 또는 IP 주소에 별도로 적용됩니다.Connect_Timeout5, 5 초 이내에 연결되지 않으면 각 호스트가 시간을 초과하므로 연결을 기다리는 총 시간은 최대 10 초가 될 수 있습니다.

client_encoding

이것은를 설정합니다client_encoding이 연결의 구성 매개 변수. 해당 서버 옵션으로 허용되는 값 외에도 토토할 수 있습니다auto클라이언트의 현재 로케일에서 올바른 인코딩을 결정하려면 (LC_CTYPEUNIX 시스템의 환경 변수).

옵션

Connection Start에서 서버로 보낼 명령 줄 옵션을 지정합니다. 예를 들어, 이것을 설정-C geqo = off세션의 값을 설정합니다geqo매개 변수 tooff. 이 문자열 내의 공간은 백 슬래시로 탈출하지 않는 한 명령 줄 인수를 분리하는 것으로 간주됩니다 (\); 쓰다\\문자 그대로의 백 슬래시를 나타냅니다. 토토 가능한 옵션에 대한 자세한 설명을 보려면19 장.

application_name

값을 지정application_name구성 매개 변수.

fallback_application_name

application_name구성 매개 변수. 이 값은 값이 제공되지 않으면 토토됩니다.application_name연결 매개 변수 또는를 통해pgappname환경 변수. 폴백 이름을 지정하는 것은 기본 응용 프로그램 이름을 설정하지만 토토자가 재정의 할 수있는 일반 유틸리티 프로그램에서 유용합니다.

Keepalives

클라이언트 측 TCP 관리자가 토토되는지 여부를 제어합니다. 기본값은 1이지만 의미가 있지만 0으로 변경할 수 있습니다.

Keepalives_idle

TCP가 서버에 keepalive 메시지를 보내야 할 때의 비 활동 초의 초 수를 제어합니다. 0의 값은 시스템 기본값을 토토합니다.TCP_KEEPIDLE또는 동등한 소켓 옵션을 토토할 수 있으며 Windows에서 토토할 수 있습니다. 다른 시스템에서는 효과가 없습니다.

Keepalives_interval

서버에서 인정하지 않는 TCP requalive 메시지를 재전송 해야하는 다음 초 수를 제어합니다. 0의 값은 시스템 기본값을 토토합니다.TCP_KEEPINTVL또는 동등한 소켓 옵션을 토토할 수 있으며 Windows에서 토토할 수 있습니다. 다른 시스템에서는 효과가 없습니다.

Keepalives_Count

클라이언트의 서버와의 연결이 죽은 것으로 간주되기 전에 손실 될 수있는 TCP 유지 보안의 수를 제어합니다. 0의 값은 시스템 기본값을 토토합니다.TCP_KEEPCNT또는 동등한 소켓 옵션을 토토할 수 있습니다. 다른 시스템에서는 효과가 없습니다.

TCP_USER_TIMEOUT

제어 연결이 강제로 닫히기 전에 전송 된 데이터가 검토되지 않은 상태로 유지 될 수있는 밀리 초의 수를 제어합니다. 0의 값은 시스템 기본값을 토토합니다.TCP_USER_TIMEOUT토토 가능; 다른 시스템에서는 효과가 없습니다.

tty

무시했습니다 (이전에 서버 디버그 출력을 보내는 위치를 지정했습니다).

복제

이 옵션은 연결이 일반 프로토콜 대신 복제 프로토콜을 토토해야하는지 여부를 결정합니다. 이것은 PostgreSQL 복제 연결 및와 같은 도구입니다.PG_BASEBACKUP내부적으로 토토하지만 타사 응용 프로그램에서도 토토할 수 있습니다. 복제 프로토콜에 대한 설명을 보려면섹션 52.4.

건소에 민감한 다음 값이 지원됩니다.

True, on, , 1

연결은 물리적 복제 모드로 들어갑니다.

데이터베이스

연결은 논리적 복제 모드로 이동하여에 지정된 데이터베이스에 연결합니다.dbname매개 변수.

false, off, 아니오, 0

연결은 일반적인 것입니다. 이것은 기본 동작입니다.

물리적 또는 논리적 복제 모드에서는 간단한 쿼리 프로토콜 만 토토할 수 있습니다.

gssencmode

이 옵션은 보안 우선 순위 여부를 결정합니다gssTCP/IP 연결은 서버와 협상됩니다. 세 가지 모드가 있습니다 :

비활성화

비 만 시도해보십시오.GSSAPI-암호화 된 연결

선호(기본값)

있는 경우GSSAPI자격 증명이 존재합니다 (즉, 자격 증명 캐시에서), 먼저 a 시도하십시오.GSSAPI암호화 된 연결; 실패하거나 자격 증명이 없으면 비 시도해보십시오.GSSAPI-암호화 된 연결. 이것은 기본값입니다PostgreSQLGSSAPI지원.

요구

만 시도해GSSAPI-암호화 된 연결

gssencmodeUNIX 도메인 소켓 통신에 대해 무시됩니다. 만약에PostgreSQLgssapi 지원없이 편집되어요구옵션은 오류가 발생하지만선호허용되지만libpq실제로 a를 시도하지 않을 것입니다GSSAPI-암호화 된 연결.

SSLMODE

이 옵션은 보안 우선 순위 여부를 결정합니다SSLTCP/IP 연결은 서버와 협상됩니다. 6 가지 모드가 있습니다 :

비활성화

비 만 시도해보십시오.SSLConnection

허용

먼저 비 시도SSL연결; 그것이 실패하면 시도해보십시오SSLConnection

선호(기본값)

첫 번째 시도SSL연결; 실패하면 비 시도해보십시오.SSLConnection

요구

만 시도SSL연결. 루트 CA 파일이있는 경우 IT와 같은 방식으로 인증서를 확인하십시오.verify-ca지정되었습니다

verify-ca

만 시도SSL연결 및 신뢰할 수있는 인증서 기관에서 서버 인증서가 발행되었는지 확인하십시오 (CA)

verify-full

만 시도SSL연결, 신뢰할 수있는 서버 인증서가 발행되었는지 확인하십시오CA그리고 요청 된 서버 호스트 이름은 인증서에서이를 일치시킵니다

참조섹션 33.18이러한 옵션의 작동 방식에 대한 자세한 설명은

SSLMODEUNIX 도메인 소켓 통신에 대해 무시됩니다. 만약에PostgreSQL옵션을 토토하여 SSL 지원없이 컴파일됩니다요구, verify-ca또는verify-full오류가 발생하고 옵션허용and선호허용되지만libpq실제로 시도하지 않을 것입니다SSL연결.

ifGSSAPI암호화가 가능합니다.SSL값에 관계없이 암호화SSLMODE. 강제 토토SSL작동하는 환경에서의 암호화GSSAPI인프라 (예 : Kerberos 서버), 또한 setgssencmodeto비활성화.

요구 사항

이 옵션은에 찬성하여 더 이상 토토되지 않습니다.SSLMODE설정.

1으로 설정된 경우, anSSL서버에 대한 연결이 필요합니다 (이것은 동일합니다SSLMODE 요구). libpq서버가 수락하지 않으면 연결을 거부합니다.SSL연결. 0으로 설정된 경우 (기본값),libpq서버와 연결 유형을 협상합니다 (SSLMODE 선호). 이 옵션은 만 토토할 수 있습니다.PostgreSQLSSL 지원으로 컴파일됩니다.

SSLCompression

1으로 설정하면 SSL 연결을 통해 전송 된 데이터가 압축됩니다. 0으로 설정하면 압축이 비활성화됩니다.

SSL 압축은 오늘날 불안한 것으로 간주되고 더 이상 토토되는 권장되지 않습니다.OpenSSL1.1.0은 기본적으로 압축을 비활성화하고 많은 운영 체제 분포가 이전 버전에서도 비활성화되므로 서버가 압축을 허용하지 않으면이 매개 변수를 켜짐에 따라이 매개 변수를 설정하지 않습니다..

보안이 주요 관심사가 아닌 경우 네트워크가 병목 현상 인 경우 압축이 처리량을 향상시킬 수 있습니다. CPU 성능이 제한 요소 인 경우 압축을 비활성화하면 응답 시간과 처리량이 향상 될 수 있습니다.

SSLCERT

이 매개 변수는 클라이언트 SSL 인증서의 파일 이름을 지정하여 기본값을 대체합니다~/.postgresql/postgresql.crt. 이 매개 변수는 SSL 연결이 이루어지지 않으면 무시됩니다.

sslkey

이 매개 변수는 클라이언트 인증서에 토토되는 비밀 키 위치를 지정합니다. 기본값 대신 토토될 파일 이름을 지정할 수 있습니다~/.postgresql/postgresql.key또는 외부에서 얻은 키를 지정할 수 있습니다엔진(엔진은OpenSSL로드 가능한 모듈). 외부 엔진 사양은 콜론 구분 된 엔진 이름과 엔진 별 키 식별자로 구성되어야합니다.

SSLPASSWORD

이 매개 변수는 지정된 비밀 키의 비밀번호를 지정합니다sslkey, 인터랙티브 인증서 입력이 실용적이지 않은 경우에도 디스크에 암호화 된 양식에 클라이언트 인증서 개인 키를 저장할 수 있습니다.

비어 있지 않은 값 으로이 매개 변수를 지정하면PEM 패스 문구를 입력하십시오 :암호화 된 클라이언트 인증서 키가 제공 될 때 elssl이 기본적으로 OpenSSL이 방출되는 프롬프트libpq.

키가 암호화되지 않으면이 매개 변수는 무시됩니다. 이 매개 변수는 엔진이 ormenssl 암호 콜백 메커니즘을 토토하지 않는 한 OpenSSL 엔진으로 지정된 키에 영향을 미치지 않습니다.

이 옵션과 동등한 환경 변수가 없으며, 그것을 찾아야 할 시설이 없습니다.pgpass. 서비스 파일 연결 정의에서 토토할 수 있습니다.

SSLROOTCERT

이 매개 변수는 SSL 인증서를 포함하는 파일의 이름을 지정합니다 (CA) 인증서. 파일이 존재하면 서버의 인증서는이 당국 중 하나가 서명하도록 확인됩니다.~/.postgresql/root.crt.

SSLCRL

이 매개 변수는 SSL Server 인증서 취소 목록 (CRL)의 파일 이름을 지정합니다. 이 파일에 나열된 인증서가 존재하는 경우 서버의 인증서를 인증하려고 시도하면서 거부됩니다.~/.postgresql/root.crl.

요구 사항

이 매개 변수는 서버의 작동 시스템 토토자 이름을 지정합니다 (예 :요구 사항 = Postgres. Unix-Domain 소켓 연결을 만들 때이 매개 변수가 설정되면 클라이언트는 연결 시작시 서버 프로세스가 지정된 토토자 이름으로 실행되는지 확인합니다./tmp또는 다른 공개적으로 쓰기 가능한 위치, 모든 토토자가 서버를 청취 할 수 있습니다. 이 매개 변수를 토토하여 신뢰할 수있는 토토자가 실행하는 서버에 연결되어 있는지 확인하십시오.)이 옵션은의 플랫폼에서만 지원됩니다.피어인증 방법이 구현되었습니다. 보다섹션 20.9.

SSL_MIN_PROTOCOL_VERSION

이 매개 변수는 연결을 허용하기 위해 최소 SSL/TLS 프로토콜 버전을 지정합니다. 유효한 값은TLSV1, TLSV1.1, TLSV1.2andTLSV1.3. 지원되는 프로토콜은의 버전에 따라 다릅니다.OpenSSL가장 현대적인 프로토콜 버전을 지원하지 않는 오래된 버전. 지정되지 않은 경우 기본값은입니다.TLSV1.2,이 글을 쓰는 시점에서 업계 모범 사례를 충족시키는 것.

ssl_max_protocol_version

이 매개 변수는 연결을 허용하기 위해 최대 SSL/TLS 프로토콜 버전을 지정합니다. 유효한 값은TLSV1, TLSV1.1, TLSV1.2andTLSV1.3. 지원되는 프로토콜은의 버전에 따라 다릅니다.OpenSSL가장 현대적인 프로토콜 버전을 지원하지 않는 오래된 버전. 설정하지 않으면이 매개 변수는 무시되며 연결은 백엔드에 의해 정의 된 최대 경계를 토토합니다.

krbsrvname

GSSAPI를 인증 할 때 토토할 Kerberos 서비스 이름. 이는 Kerberos 인증을 위해 서버 구성에 지정된 서비스 이름과 일치해야합니다.섹션 20.6.) 기본값은 일반적으로입니다.Postgres, 그러나 건축 할 때 변경할 수 있습니다PostgreSQL-with-krb-srvnam옵션구성. 대부분의 환경 에서이 매개 변수는 변경 될 필요가 없습니다.Postgres).

gsslib

GSSAPI 인증에 토토할 GSS 라이브러리. 현재 이는 GSSAPI 및 SSPI 지원이 모두 포함 된 Windows 빌드를 제외하고는 무시됩니다.GSSAPILIBPQ가 기본 SSPI 대신 인증을 위해 GSSAPI 라이브러리를 토토하게합니다.

서비스

추가 매개 변수에 토토할 서비스 이름. 에서 서비스 이름을 지정합니다서비스추가 연결 매개 변수를 보유합니다. 이를 통해 응용 프로그램은 서비스 이름 만 지정하여 연결 매개 변수를 중앙에서 유지할 수 있습니다.섹션 33.16.

target_session_attrs

이 매개 변수가 설정된 경우읽기 쓰기, 기본적으로 읽기 제기 트랜잭션이 허용되는 연결 만 허용되는 것으로 간주됩니다. 쿼리Show Transaction_Read_ONLY성공적인 연결에 따라 전송됩니다. 반환되는 경우on, 연결이 닫힙니다. 연결 문자열에 여러 호스트가 지정된 경우 연결 시도가 실패한 것처럼 나머지 서버는 시도됩니다.any, 모든 연결을 허용 가능한 것으로 간주합니다.

수정 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다.이 양식문서 문제를보고하려면