SSL ist auf dem Server nicht aktiviert

99

Der Versuch, mit go mit einer Postgres-Datenbank zu kommunizieren, bereitet die Anweisung folgendermaßen vor:

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
}

Wirft den folgenden Fehler:

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

Irgendeine Lösung ?

Bei Bedarf kann ich weitere Informationen hinzufügen.

Gustavo Semião-Lobo
quelle
1
// Ich habe diesen Fehler in HashiCorp Vault erhalten.
Nathan Basanese
2
@ NathanBasanese, ich weiß, dass es lange her ist, aber ich habe das Problem gelöst, indem ich eine ?sslmode=disableOn-Connection-Zeichenfolge angehängt habe .
LucasBr

Antworten:

179

Sie sollten eine DB-Verbindung ohne SSL-Verschlüsselung wie folgt herstellen:

db, err := sql.Open("postgres", "user=test password=test dbname=test sslmode=disable") 
Kavu
quelle
Danke für diesen lebensrettenden Kommentar. Übrigens: Weiß jemand, wie man psql so einstellt, dass SSL für Docker-Container unterstützt wird?
Tempel
121

Wenn Ihr Datenquellenname eine URL ist, gehen Sie folgendermaßen vor:

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

sslmode wird nur wie ein Abfrageparameter zur Datenbank-URL hinzugefügt.

Eatonphil
quelle
18

Versuchen Sie es, um eine Verbindung ohne SSL herzustellen

postgres://username:password@host:5432/database?sslmode=disable
Harald Nordgren
quelle
//, ich habe dies zu meiner Verbindungszeichenfolge hinzugefügt und es hat erfolgreich funktioniert. Danke, @Harald.
Nathan Basanese
10

Bitte beachten Sie:

Dies tritt sogar auf, wenn Sie a angegeben haben sslmode=disable, aber andere Parameter leer haben. Beispielsweisedbname=

Beispiel: Verbindungszeichenfolge:

user=test password=test dbname=sslmode=disablewird auch diesen Fehler ausgeben , da der Datenbankname leer ist.

frops
quelle
4
Dies hat mich bei meinem lokalen Entwickler-Setup gerettet, da das Passwort hier leer war.
Perelin
0

So habe ich es zum Laufen gebracht:

db, err := sql.Open("postgres", "postgres://{user}:{password}@{hostname}:{port}/{database-name}?sslmode=disable")
gildniy
quelle