서버에서 SSL을 사용할 수 없습니다.


101

go를 사용하여 postgres 데이터베이스와 통신을 시도하고 다음과 같은 명령문을 준비합니다.

var stmt *sql.Stmt
var err error

stmt, err = db.Prepare(selectStatement)
if err != nil {
    fmt.Printf("db.Prepare error: %v\n",err)
    return err
}

다음 오류가 발생합니다.

db.Prepare error: pq: SSL is not enabled on the server

어떤 해결책?

필요한 경우 더 많은 정보를 추가 할 수 있습니다.


1
//, HashiCorp Vault에서이 오류가 발생했습니다.
Nathan Basanese 2018

2
@NathanBasanese, 오래 전 일이라는 것을 알고 있지만 ?sslmode=disable연결 문자열 을 추가하여 해결했습니다 .
LucasBr

답변:


180

다음과 같이 SSL 암호화없이 DB 연결을 설정해야합니다.

db, err := sql.Open("postgres", "user=test password=test dbname=test sslmode=disable") 

생명을 구하는이 코멘트에 감사드립니다. btw : 누구든지 도커 컨테이너 용 SSL을 지원하도록 psql을 설정하는 방법을 알고 있습니까?
사원

121

데이터 소스 이름이 URL 인 경우 다음과 같이합니다.

db, err := sql.Open("postgres", "postgres://username:password@localhost/db_name?sslmode=disable")

sslmode 쿼리 매개 변수처럼 db url에 추가됩니다.


18

SSL없이 연결을 설정하려면

postgres://username:password@host:5432/database?sslmode=disable

//, 이것을 연결 문자열에 추가했고 성공적으로 작동했습니다. 감사합니다, @Harald.
Nathan Basanese 2018

10

주의 사항 :

를 표시 sslmode=disable했지만 다른 매개 변수가 비어 있는 경우에도 발생합니다 . 예를 들면dbname=

예를 들어, 연결 문자열 :

user=test password=test dbname=sslmode=disable또한이 오류를 발행 DBNAME 비어 있기 때문에.


4
여기에 암호가 비어 있었기 때문에 로컬 개발 설정에 저장되었습니다.
perelin

0

이것이 내가 작동하는 방법입니다.

db, err := sql.Open("postgres", "postgres://{user}:{password}@{hostname}:{port}/{database-name}?sslmode=disable")
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.