SSL không được bật trên máy chủ


100

Đang cố gắng giao tiếp với cơ sở dữ liệu postgres, chuẩn bị câu lệnh như sau:

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
}

Ném lỗi sau:

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

Bất kì giải pháp nào ?

Tôi có thể bổ sung thêm thông tin, nếu cần.


1
//, tôi đã gặp lỗi này trong HashiCorp Vault.
Nathan Basanese

2
@NathanBasanese, tôi biết là đã lâu rồi, nhưng tôi đã giải quyết được vấn đề gắn thêm một ?sslmode=disablechuỗi kết nối trên.
LucasBr

Câu trả lời:


180

Bạn nên thiết lập kết nối DB mà không cần mã hóa SSL, như sau:

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

cảm ơn cho bình luận cuộc sống tiết kiệm này. btw: có ai biết cách đặt psql để hỗ trợ SSL cho vùng chứa docker không?
đền

121

Nếu tên nguồn dữ liệu của bạn là url, bạn sẽ thực hiện như sau:

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

sslmode chỉ được thêm vào url db giống như một tham số truy vấn.


18

Để thiết lập kết nối không có SSL, hãy thử

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

//, tôi đã thêm cái này vào chuỗi kết nối của mình và nó hoạt động thành công. Cảm ơn, @Harald.
Nathan Basanese

10

Chú ý, vui lòng:

Điều này thậm chí xảy ra, nếu bạn đã chỉ ra một sslmode=disable, nhưng có tham số khác trống. Ví dụdbname=

Ví dụ: chuỗi kết nối:

user=test password=test dbname=sslmode=disablecũng sẽ xuất hiện lỗi này , vì dbname trống.


4
Điều này đã cứu tôi trong quá trình thiết lập nhà phát triển cục bộ của tôi, vì mật khẩu trống ở đây.
perelin

0

Đây là cách tôi làm cho nó hoạt động:

db, err := sql.Open("postgres", "postgres://{user}:{password}@{hostname}:{port}/{database-name}?sslmode=disable")
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.