एसएसएल सर्वर पर सक्षम नहीं है


101

इस तरह के बयान की तैयारी के साथ, पोस्टग्रेज डेटाबेस के साथ संवाद करने की कोशिश करना:

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 वॉल्ट में यह त्रुटि प्राप्त की।
नाथन बसानी

2
@NathanBasanese, मुझे पता है कि यह बहुत समय पहले था, लेकिन मैंने ?sslmode=disableकनेक्शन स्ट्रिंग पर अपील करने के लिए हल किया ।
लुकासब्र

जवाबों:


180

आपको SSL एन्क्रिप्शन के बिना DB कनेक्शन स्थापित करना चाहिए, जैसे:

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

इस बचत जीवन टिप्पणी के लिए धन्यवाद। btw: किसी को पता है कि doq कंटेनर के लिए 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

//, मैंने इसे अपने कनेक्शन स्ट्रिंग में जोड़ा, और इसने सफलतापूर्वक काम किया। धन्यवाद, @ हेराल्ड।
नाथन बसानी

10

कृपया ध्यान दें:

यह तब भी होता है, यदि आपने संकेत दिया है sslmode=disable, लेकिन खाली अन्य परम है। उदाहरण के लिएdbname=

उदाहरण के लिए, कनेक्शन स्ट्रिंग:

user=test password=test dbname=sslmode=disableयह त्रुटि भी जारी करेगा , क्योंकि dbname रिक्त है।


4
इसने मुझे मेरे स्थानीय देव सेटअप पर बचाया, क्योंकि यहां पासवर्ड खाली था।
पेरेलिन

0

यह है कि मैं इसे कैसे काम कर रहा हूं:

db, err := sql.Open("postgres", "postgres://{user}:{password}@{hostname}:{port}/{database-name}?sslmode=disable")
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.