2
respostas

[Erro] Programa da erro ao tentar se conectar com o BD

O programa retorna um erro no Github Actions toda a vez que ele tenta conectar no banco de dados. Ele retorna o erro número 1.

Erro que retorna.

[error] failed to initialize database, got error failed to connect to `host=localhost user=root database=`: failed SASL auth (FATAL: password authentication failed for user "root" (SQLSTATE 28P01))
2024/02/22 19:46:08 Erro ao conectar com banco de dados

DB.go

import (
    "log"
    "os"
    "github.com/guilhermeonrails/api-go-gin/models"
    "gorm.io/driver/postgres"
    "gorm.io/gorm"
)

var (
    DB  *gorm.DB
    err error
)

func ConectaComBancoDeDados() {

stringDeConexao := "host="+os.Getenv("HOST")+" user="+os.Getenv("USER")+" password="+os.Getenv("PASSWORD")+" dbname="+os.Getenv("DBNAME")+" port="+os.Getenv("PORT")+" sslmode=disable"
DB, err = gorm.Open(postgres.Open(stringDeConexao))
if err != nil {
    log.Panic("Erro ao conectar com banco de dados")
}

DB.AutoMigrate(&models.Aluno{})
}

Dockerfile

FROM ubuntu:latest

EXPOSE 8000

WORKDIR /app

ENV HOST=localhost PORT=5432

ENV USER=root PASSWORD=root DBNAME=root

COPY ./main main

ENTRYPOINT [ "./main" ]

Go.yml

jobs:

  test:
    runs-on: ${{ matrix.os }}
    env:
      HOST: localhost
      PORT: 5432
      USER: root
      PASSWORDS: root
      DBNAME: root
    strategy:
      matrix:
        go_version: ['1.17', '1.18', '>=1.18']
        os: ['ubuntu-latest']`
2 respostas

Oii, Raphael, tudo bem com você?

O erro diz que é uma falha de autenticação.

O problema ficou na variável de ambiente PASSWORDS, dentro do YAML Go.yml. Você digitou PASSWORDS em vez de PASSWORD. É só tirar do plural que provavelmente funcionará normalmente :)

Se a dúvida persistir, estamos aqui.

Abraços!

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

Raphael, tudo bem?

Eu tive o mesmo erro, porém, após verificar todas as variáveis de ambiente e me certificar de que estava tudo certo, a solução que resolveu meu problema foi trocar a PORT para 5433.

Arquivo docker-compose.yml ficou assim:

version: '3'
services:
  postgres:
    image: "postgres"
    environment:
      - POSTGRES_USER=root
      - POSTGRES_PASSWORD=root
      - POSTGRES_DB=root      
    ports:
      - "5433:5432"
    volumes:
      - /postgres-data:/var/lib/postgresql/data  

  pgadmin-compose:
    image: dpage/pgadmin4
    environment:
      PGADMIN_DEFAULT_EMAIL: "gui@alura.com"
      PGADMIN_DEFAULT_PASSWORD: "123456"
    ports:
      - "54321:80"
    depends_on:
      - postgres

Arquivo Dockerfile

FROM ubuntu:latest

EXPOSE 8000

WORKDIR /app

ENV HOST=localhost PORT=5433

ENV USER=root PASSWORD=root DBNAME=root

COPY ./main main

CMD [ "./main" ]

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software