SSL не включений на сервері


101

Намагаючись зв’язатись із базою даних postgres за допомогою go, готуючи заяву так:

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.
Натан Басанес

2
@NathanBasanese, я знаю, що це було давно, але я вирішив це, додавши ?sslmode=disableрядок на з'єднанні.
LucasBr

Відповіді:


180

Вам слід встановити з'єднання DB без шифрування SSL, наприклад:

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

дякую за цей врятувальний коментар до життя. btw: хтось знає, як встановити psql для підтримки SSL для контейнера docker?
храм

121

Якщо назва вашого джерела даних є URL-адресою, ви зробите це так:

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

sslmode просто додається до URL-адреси db як параметр запиту.



10

Зверніть увагу:

Це навіть трапляється, якщо ви вказали а sslmode=disable, але інший параметр порожній. Наприкладdbname=

Наприклад, рядок з'єднання:

user=test password=test dbname=sslmode=disableбуде також видавати цю помилку , тому що імя_бд порожній.


4
Це врятувало мене під час моєї локальної розробки, оскільки тут був порожній пароль.
перелин

0

Ось як це я працював:

db, err := sql.Open("postgres", "postgres://{user}:{password}@{hostname}:{port}/{database-name}?sslmode=disable")
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.