원격 PostgreSQL 데이터베이스를 설정하는 중입니다. 서버가 CentOS 7 및 PostgreSQL-9.5를 실행 중입니다. 현재 사용자가 데이터베이스를 쿼리 할 수 있는지 여부를 테스트하고 있습니다.Python3 : SSL을 사용하여 원격 Postgres 데이터베이스에 연결
import psycopg2
host = 'server1'
dbname = 'test_db'
user = 'test-user'
sslcert = 'test-db.crt'
sslmode = 'verify-full'
sslkey = 'test-db.key'
dsn = 'host={0} dbname={1} user={2} sslcert={3} sslmode={4} sslkey={5}'.format(host, dbname, user, sslcert, sslmode, sslkey)
conn = psycopg2.connect(dsn)
연결 시간이 다음과 같은 오류와 아웃 : : 나는 (아래) 몇 가지를 시도
psycopg2.OperationalError: could not connect to server: Connection timed out (0x0000274C/10060)
Is the server running on host "server1" (xx.xx.xx.xx) and accepting
TCP/IP connections on port 5432?
이를 위해, 나는 다음 있습니다. 파이썬 끝 또는 데이터베이스 구성의 어느쪽에 문제가 있는지 파악하려고합니다.
- 파이썬 구문이 올바른가요?
sslmode
,sslcert
및sslkey
과 같이 DSN 인수와 관련된 설명서는 어디에서 찾을 수 있습니까?- 이러한 종류의 연결에 더 적합한 다른 패키지가 있습니까?
- 다른 질문이 있습니까?
내가 체크 한 다음
- '서버 1'올바르게 입력 및 파이썬에 의해 반환 된 IP 주소가 다른 모든 인수 철자가 정확하고 올바른 객체를 참조하는
- 에 해당되었다
- 현재 Postgres가 실행 중입니다 (
service postgres-9.5 status
은 "활성"으로 표시됩니다) - Postgres는 포트 5432에서 수신 대기합니다.
psycopg2
해당 패키지이다SSL connection (protocol: TLSAv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
user=test-user
는 슈퍼 유저
나의 이해로 포스트 그레스에 추가되었습니다 (psql -U username -W -d test-db -h host
반환
netstat -na | grep tcp
포트 5432에 "LISTEN"표시) 요즘 사용하기. 나는 documentation을 샅샅이 뒤졌고 SSL 연결에 관한 많은 정보를 찾지 못했습니다. 이 SO post은 psycog2
을 사용하여 SSL 연결에 대해 말하지만 설명서의 일부 구문과 일치하지 않습니다. 파이썬 스크립트에서 , 내가 시도했던 4 개 조합에 다음
- 사용
sslmode='require'
- 사용 절대
test-db.crt
에 대한 경로 및test-db.key