Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Bug] GORM Erro na conexão com o banco de dados

Pelo o que eu entendi ocorre um erro por falha na senha, mas não estou entendendo o porquê desse erro sendo que já ferifiquei e coloquei a mesma senha.

[error] failed to initialize database, got error failed to connect to `host=localhost user=root database=root`: server error (FATAL: password authentication failed for user "root" (SQLSTATE 28P01))

Código que faz a conexão com o banco

package db

import (
    "log"

    "gorm.io/driver/postgres"
    "gorm.io/gorm"
)

var (
    DB *gorm.DB
    err error
)

func ConnectDB() {
    dns := "host=localhost user=root password=root dbname=root port=5432 sslmode=disable"
    DB, err = gorm.Open(postgres.Open(dns))
    if err != nil {
        log.Println("ERRO NA CONEXÃO COM O BANCO DE DADOS!", err)
    }
}

Meu módulo

module api-rest

go 1.22.1

require github.com/gorilla/mux v1.8.1

require (
    github.com/jackc/pgpassfile v1.0.0 // indirect
    github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect
    github.com/jackc/pgx/v5 v5.4.3 // indirect
    github.com/jinzhu/inflection v1.0.0 // indirect
    github.com/jinzhu/now v1.1.5 // indirect
    golang.org/x/crypto v0.14.0 // indirect
    golang.org/x/text v0.13.0 // indirect
    gorm.io/driver/postgres v1.5.7 // indirect
    gorm.io/gorm v1.25.10 // indirect
)
2 respostas
solução!

Olá, Gabriel! Tudo bem?

Se você já verificou as credenciais e elas coincidem com as que estão na string de conexão com o banco, imagino que o problema pode está relacionado com a porta que você está tentando conectar.

Se você tiver o Postgres instalado localmente no seu PC ele vai consumir a porta 5432, e a imagem do Postgres que você levanta no Docker também está consumindo essa porta, o que causa um certo conflito. Para resolvê-lo, você deve alterar a porta que o Postgres do Docker vai usar da sua máquina.

Então acesse o arquivo docker-compose.yml e alterar a propriedade da porta para ficar assim:

    ports:
      - "5433:5432"

A alteração realizada foi a alteração da numeração da primeira porta para 5433, que é outra porta valida para o Postgres. Por fim, na sua string de conexão você deve alterar ela para essa nova porta. Segue um exemplo:

dns := "host=localhost user=root password=root dbname=root port=5433 sslmode=disable"

Lembre-se, antes de levantar um novo container com a porta diferente no Docker é necessário apagar o container e as imagens criadas para que as novas configurações sejam estabelecidas.

Espero que isso ajude a solucionar o seu problema.

Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Obrigado pela ajuda Armano, funcionou tudo perfeitamente!