ไม่ได้เปิดใช้ SSL บนเซิร์ฟเวอร์


107

พยายามสื่อสารกับฐานข้อมูล 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
Nathan Basanese

2
@NathanBasanese ฉันรู้ว่ามันนานมาแล้ว แต่ฉันแก้ไขที่ต่อท้าย?sslmode=disableสตริงการเชื่อมต่อ
LucasBr

คำตอบ:


191

คุณควรสร้างการเชื่อมต่อ DB โดยไม่มีการเข้ารหัส SSL เช่นนั้น:

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

ขอบคุณสำหรับความคิดเห็นในการช่วยชีวิตนี้ btw: ใครรู้วิธีตั้งค่า psql ให้รองรับ SSL สำหรับ docker container?
วัด

125

หากชื่อแหล่งข้อมูลของคุณเป็น url คุณจะทำดังนี้:

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

sslmode จะถูกเพิ่มลงใน db url เช่นพารามิเตอร์การค้นหา


19

หากต้องการสร้างการเชื่อมต่อโดยไม่ใช้ SSL ให้ลอง

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

1
// ฉันเพิ่มสิ่งนี้ลงในสตริงการเชื่อมต่อของฉันและทำงานได้สำเร็จ ขอบคุณ @Harald
Nathan Basanese

13

โปรดสังเกต:

สิ่งนี้เกิดขึ้นได้หากคุณระบุ a sslmode=disableแต่มีพารามิเตอร์อื่นว่างเปล่า ตัวอย่างเช่นdbname=

ตัวอย่างเช่นสตริงการเชื่อมต่อ:

user=test password=test dbname=sslmode=disableจะทำให้เกิดข้อผิดพลาดนี้ด้วยเนื่องจาก dbname ว่างเปล่า


4
สิ่งนี้ช่วยฉันในการตั้งค่า dev ในเครื่องเนื่องจากรหัสผ่านว่างเปล่าที่นี่
perelin

1

นี่คือวิธีที่ฉันใช้งานได้:

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

ฉันคิดว่านี่เป็นคำตอบที่ดีกว่าที่ยอมรับ
dark_ruby
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.