다음 기능은 A와 연결하는 것을 다루고 있습니다PostgreSQL백엔드 서버. 응용 프로그램 프로그램에는 한 번에 몇 가지 백엔드 연결이 열릴 수 있습니다.pgconn
객체. 함수에서 얻은PQConnectDB
, PQCONNECTDBPARAMS
또는pqsetdblogin
. 이러한 기능은 아마도 널이 아닌 객체 포인터를 항상 반환 할 것입니다. 아마도 메모리가 너무 적지 않는 한pgconn
개체. 그만큼pqstatus
쿼리가 연결 객체를 통해 전송되기 전에 성공적인 연결에 대한 리턴 값을 확인하려면 함수를 호출해야합니다.
신뢰할 수없는 토토자가 채택되지 않은 데이터베이스에 액세스 할 수있는 경우보안 스키마 토토 패턴, 공개적으로 쓰레기 스키마를 제거하여 각 세션을 시작하십시오search_path
. 하나는 매개 변수 키워드를 설정할 수 있습니다옵션
value-csearch_path =
. 또는 발행 할 수 있습니다pqExec (
연결 후. 이 고려 사항은libpq; 임의의 SQL 명령을 실행하기 위해 모든 인터페이스에 적용됩니다.conn
, "pg_catalog.set_config ( 'search_path', '', false)" 선택
UNIX에서 열린 LIBPQ 연결로 프로세스를 포킹하면 부모 및 자식 프로세스가 동일한 소켓 및 운영 체제 자원을 공유하기 때문에 예측할 수없는 결과를 초래할 수 있습니다. 이러한 이유로, 그러한 토토은 권장되지 않지만exec
새 실행 파일을로드하기 위해 아동 프로세스에서 안전합니다.
PQCONNECTDBPARAMS
데이터베이스 서버에 새로 연결됩니다.
pgconn *pqconnectdbparams (const char *const *키워드,
이 기능은 2에서 가져온 매개 변수를 토토하여 새 데이터베이스 연결을 엽니 다.null
-종결 된 배열. 첫 번째,키워드
는 문자열 배열로 정의되며 각각은 핵심 단어입니다. 두 번째,값
, 각 키 단어의 값을 제공합니다. 같지 않은pqsetdblogin
아래에서는 기능 서명을 변경하지 않고 매개 변수 세트를 확장 할 수 있으므로이 기능 (또는 비 차단 아날로그 토토PQConnectStartParams
andPQConnectPoll
) 새 응용 프로그램 프로그래밍에 선호됩니다.
현재 인식 된 매개 변수 키워드는에 나열되어 있습니다.섹션 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
.
아니PQConnectStartParams
NORPQConnectStart
NORPQConnectPoll
여러 제한 사항이 충족되는 한 차단됩니다.
비 차단 연결 요청을 시작하려면 전화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
; 기본값은 삽입되지 않습니다.
iferrmsg
null
,*errmsg
null
성공에 관한 것, 그렇지 않으면Malloc
'D 오류 문자열 문제를 설명합니다. (또한 가능합니다*errmsg
null
그리고 반환 할 함수null
; 이것은 메모리 외 상태를 나타냅니다.)
옵션 배열을 처리 한 후 전달하여PQCONNINFOFREE
. 이 작업이 완료되지 않으면 각 호출마다 일부 메모리가 유출됩니다PQCONNINFOPARSE
. 반대로 오류가 발생하면errmsg
null
,를 토토하여 오류 문자열을 제거하십시오PQFREEMEM
.
pqfinish
서버 연결을 닫습니다. 또한에 토토 된 메모리를 해방합니다.pgconn
개체.
void pqfinish (pgconn *conn);
서버 연결 시도가 실패하더라도 (pqstatus
), 응용 프로그램은 전화해야합니다pqfinish
pgconn
개체. 그만큼pgconn
포인터는 다시 토토해서는 안됩니다pqfinish
호출.
pqreset
통신 채널을 서버로 재설정합니다.
void pqreset (pgconn *conn);
이 기능은 서버에 대한 연결을 닫고 이전에 토토한 동일한 매개 변수를 토토하여 새로운 연결을 설정하려고 시도합니다. 작업 연결이 손실되면 오류 복구에 유용 할 수 있습니다.
PQRESETSTART
pqresetpoll
블로킹하지 않은 방식으로 통신 채널을 서버로 재설정합니다.
int pqresetstart (pgconn *conn);
이러한 기능은 서버에 대한 연결을 닫고 이전에 토토한 동일한 매개 변수를 토토하여 새로운 연결을 설정하려고 시도합니다. 작업 연결이 손실되면 오류 복구에 유용 할 수 있습니다.pqreset
(위) 비 블로킹 방식으로 작용한다는 점에서. 이러한 기능은와 동일한 제한을 겪습니다.PQConnectStartParams
, PQConnectStart
andPQConnectPoll
.
연결 재설정을 시작하려면 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
무효가 종결되어야합니다. 콜백은 저장된 비밀번호의 길이를 반환해야합니다.buf
NULL 터미네이터 제외. 실패시 콜백이 설정되어야합니다buf [0] = '\ 0'
및 반환 0. 참조pqdefaultsslkeypasshook_openssl
inlibpq의 예를위한 소스 코드.
토토자가 명시 적 키 위치를 지정하면 그 경로가conn-> sslkey
콜백이 호출 될 때. 기본 키 경로를 토토하는 경우 비어 있습니다.
앱 콜백은 처리되지 않은 사례를 위임하여pqdefaultsslkeypasshook_openssl
, 또는 먼저 전화하여 0을 반환하거나 완전히 무시하면 다른 것을 시도하십시오.
콜백필수예외와 함께 정상 흐름 제어 탈출,longjmp (...)
등. 정상적으로 반환해야합니다.
PQGETSSLKEYPASSHOOK_OPENSSL
PQGETSSLKEYPASSHOOK_OPENSSL
현재 클라이언트 인증서 키 비밀번호 후크를 반환합니다.null
없는 경우.
PQSSLKEYPASSHOOK_OCKENSSL_TYPE PQGETSSLKEYPASSHOOK_OPENSSL (void);
몇libpq함수는 토토자 지정 문자열을 구문 분석하여 연결 매개 변수를 얻습니다. 이 문자열에는 2 개의 허용 형식이 있습니다 : 일반 키워드/가치 문자열 및 URI.RFC 3986-다중 호스트 연결 문자열은 아래에 설명 된대로 허용됩니다.
키워드/값 형식에서 각 매개 변수 설정은 양식에 있습니다키워드
=
value
, 설정 사이의 공간이있는. 설정의 동일한 부호 주변의 공간은 선택 사항입니다.keyword = 'value'
. 값 내의 단일 따옴표와 백 슬래시는 백 슬래시로 탈출해야합니다.\ '
and\\
.
예 :
host = localhost port = 5432 dbname = mydb connect_timeout = 10
인식 된 매개 변수 키워드는에 나열되어 있습니다.섹션 33.1.2.
연결을위한 일반 양식uriis :
PostgreSQL : // [userspec
@] [Hostspec
] [/dbname
] [?Paramspec
] 여기서userspec
is :토토자
[:비밀번호
] andHostspec
is : [호스트
] [:포트
] [,...] andParamspec
is :이름
=value
[& ...]
theuri체계 지정자가 될 수 있습니다postgresql : //
또는Postgres : //
. 나머지 각각uri부품은 선택 사항입니다. 다음 예제는 유효 함을 보여줍니다uri구문 :
postgresql : //
일반적으로uri대안으로 이름이 지정된 매개 변수로 제공 될 수 있습니다. 예를 들어:
postgresql : // mydb? host = localhost & port = 5433
모든 이름의 매개 변수는 나열된 키워드와 일치해야합니다섹션 33.1.2, JDBC 연결과의 호환성을 제외하고uris, 인스턴스ssl = true
sslmode = 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
. 아래에 설명 된 바와 같이, 각 호스트는 연결이 성공적으로 설정 될 때까지 차례로 시도됩니다.
연결할 여러 호스트를 지정하여 주어진 순서로 시도 할 수 있습니다. 키워드/값 형식에서호스트
, hostaddr
및포트
옵션은 쉼표로 구분 된 값 목록을 허용합니다. 예를 들어 첫 번째 지정된 각 옵션에 동일한 수의 요소가 제공되어야합니다.hostaddr
첫 번째 호스트 이름, 두 번째 호스트에 해당합니다.hostaddr
두 번째 호스트 이름 등에 해당합니다. 예외로, 단 하나만포트
지정되어 있으며 모든 호스트에 적용됩니다.
연결 URI 형식에서 다중 내용을 나열 할 수 있습니다호스트 : 포트
쉼표로 분리 된 쌍호스트
URI의 구성 요소
두 형식의 어느 한 형식 으로든 단일 호스트 이름은 여러 네트워크 주소로 변환 될 수 있습니다. 이것의 일반적인 예는 IPv4와 IPv6 주소가 모두있는 호스트입니다.
여러 호스트가 지정되거나 단일 호스트 이름이 여러 주소로 변환되면 모든 호스트와 주소가 성공할 때까지 순서대로 시도됩니다. 호스트에 도달 할 수없는 경우 연결이 실패합니다.
암호 파일을 토토하는 경우 호스트에 대해 다른 암호를 가질 수 있습니다. 다른 모든 연결 옵션은 목록의 모든 호스트에 대해 동일합니다.
현재 인식 된 매개 변수 키워드는 다음과 같습니다.
호스트
연결할 호스트 이름.호스트 이름이 절대 경로 이름처럼 보이면 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-full
SSL 인증서 확인. 다음 규칙이 토토됩니다.
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.conf
Microsoft Windows에서. (이 파일이 존재하지 않으면 오류 가보고되지 않습니다.)
Channel_Binding
이 옵션은 클라이언트의 채널 바인딩 토토을 제어합니다. 설정요구
연결이 채널 바인딩을 토토해야한다는 것을 의미합니다.선호
클라이언트가 가능한 경우 채널 바인딩을 선택하고비활성화
채널 바인딩 토토을 방지합니다. 기본값은선호
ifPostgreSQLSSL 지원으로 컴파일됩니다. 그렇지 않으면 기본값은입니다.비활성화
.
채널 바인딩은 서버가 클라이언트에 자체적으로 인증하는 방법입니다. SSL 연결을 통해서만 지원됩니다PostgreSQL11 이상 이후 서버를 토토하여Scram
인증 방법.
Connect_Timeout
몇 초 만에 대기하는 동안 기다리는 최대 시간 (소수 정수로 쓰기, 예를 들어,10
). 0, 음수 또는 지정되지 않은 것은 무기한 대기를 의미합니다.1
2
. 이 시간 초과는 각 호스트 이름 또는 IP 주소에 별도로 적용됩니다.Connect_Timeout
5, 5 초 이내에 연결되지 않으면 각 호스트가 시간을 초과하므로 연결을 기다리는 총 시간은 최대 10 초가 될 수 있습니다.
client_encoding
이것은를 설정합니다client_encoding
이 연결의 구성 매개 변수. 해당 서버 옵션으로 허용되는 값 외에도 토토할 수 있습니다auto
클라이언트의 현재 로케일에서 올바른 인코딩을 결정하려면 (LC_CTYPE
UNIX 시스템의 환경 변수).
옵션
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-암호화 된 연결
gssencmode
UNIX 도메인 소켓 통신에 대해 무시됩니다. 만약에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이러한 옵션의 작동 방식에 대한 자세한 설명은
SSLMODE
UNIX 도메인 소켓 통신에 대해 무시됩니다. 만약에PostgreSQL옵션을 토토하여 SSL 지원없이 컴파일됩니다요구
, verify-ca
또는verify-full
오류가 발생하고 옵션허용
and선호
허용되지만libpq실제로 시도하지 않을 것입니다SSL연결.
ifGSSAPI암호화가 가능합니다.SSL값에 관계없이 암호화SSLMODE
. 강제 토토SSL작동하는 환경에서의 암호화GSSAPI인프라 (예 : Kerberos 서버), 또한 setgssencmode
to비활성화
.
요구 사항
이 옵션은에 찬성하여 더 이상 토토되지 않습니다.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.2
andTLSV1.3
. 지원되는 프로토콜은의 버전에 따라 다릅니다.OpenSSL가장 현대적인 프로토콜 버전을 지원하지 않는 오래된 버전. 지정되지 않은 경우 기본값은입니다.TLSV1.2
,이 글을 쓰는 시점에서 업계 모범 사례를 충족시키는 것.
ssl_max_protocol_version
이 매개 변수는 연결을 허용하기 위해 최대 SSL/TLS 프로토콜 버전을 지정합니다. 유효한 값은TLSV1
, TLSV1.1
, TLSV1.2
andTLSV1.3
. 지원되는 프로토콜은의 버전에 따라 다릅니다.OpenSSL가장 현대적인 프로토콜 버전을 지원하지 않는 오래된 버전. 설정하지 않으면이 매개 변수는 무시되며 연결은 백엔드에 의해 정의 된 최대 경계를 토토합니다.
krbsrvname
GSSAPI를 인증 할 때 토토할 Kerberos 서비스 이름. 이는 Kerberos 인증을 위해 서버 구성에 지정된 서비스 이름과 일치해야합니다.섹션 20.6.) 기본값은 일반적으로입니다.Postgres
, 그러나 건축 할 때 변경할 수 있습니다PostgreSQL-with-krb-srvnam
옵션구성. 대부분의 환경 에서이 매개 변수는 변경 될 필요가 없습니다.Postgres
).
gsslib
GSSAPI 인증에 토토할 GSS 라이브러리. 현재 이는 GSSAPI 및 SSPI 지원이 모두 포함 된 Windows 빌드를 제외하고는 무시됩니다.GSSAPI
LIBPQ가 기본 SSPI 대신 인증을 위해 GSSAPI 라이브러리를 토토하게합니다.
서비스
추가 매개 변수에 토토할 서비스 이름. 에서 서비스 이름을 지정합니다서비스
추가 연결 매개 변수를 보유합니다. 이를 통해 응용 프로그램은 서비스 이름 만 지정하여 연결 매개 변수를 중앙에서 유지할 수 있습니다.섹션 33.16.
target_session_attrs
이 매개 변수가 설정된 경우읽기 쓰기
, 기본적으로 읽기 제기 트랜잭션이 허용되는 연결 만 허용되는 것으로 간주됩니다. 쿼리Show Transaction_Read_ONLY
성공적인 연결에 따라 전송됩니다. 반환되는 경우on
, 연결이 닫힙니다. 연결 문자열에 여러 호스트가 지정된 경우 연결 시도가 실패한 것처럼 나머지 서버는 시도됩니다.any
, 모든 연결을 허용 가능한 것으로 간주합니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다.이 양식문서 문제를보고하려면