SSL não está habilitado no servidor

101

Tentando se comunicar com um banco de dados postgres com go, preparando a instrução assim:

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
}

Lança o seguinte erro:

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

Qualquer solução ?

Posso adicionar mais informações, se necessário.

Gustavo Semião-Lobo
fonte
1
//, acabei recebendo esse erro no HashiCorp Vault.
Nathan Basanese
2
@NathanBasanese, sei que foi há muito tempo, mas resolvi isso acrescentando uma ?sslmode=disablestring de conexão.
LucasBr

Respostas:

181

Você deve estabelecer uma conexão DB sem criptografia SSL, assim:

db, err := sql.Open("postgres", "user=test password=test dbname=test sslmode=disable") 
Kavu
fonte
obrigado por este comentário de salvar vidas. btw: alguém sabe como configurar o psql para oferecer suporte a SSL para docker container?
templo de
121

Se o nome da sua fonte de dados for um url, você o fará assim:

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

sslmode é apenas adicionado ao url do banco de dados como um parâmetro de consulta.

Eatonphil
fonte
18

Para estabelecer uma conexão sem SSL, tente

postgres://username:password@host:5432/database?sslmode=disable
Harald Nordgren
fonte
//, adicionei isso à minha string de conexão e funcionou com êxito. Obrigado, @Harald.
Nathan Basanese
10

Aviso, por favor:

Isso ocorre até mesmo se você indicou um sslmode=disable, mas tem outro parâmetro vazio. Por exemplodbname=

Por exemplo, string de conexão:

user=test password=test dbname=sslmode=disablevai também emitir este erro , porque dbname está vazio.

frops
fonte
4
Isso me salvou em minha configuração de dev local, porque a senha estava vazia aqui.
perelin de
0

É assim que eu fiz isso funcionar:

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