2
respostas

error: autenticação do tipo password falhou para usuário

Criei o banco de dados no pgAdmin. Ao digitar npm run start aparece o seguinte erro:

[Nest] 920  - 24/01/2024, 13:38:54   ERROR [TypeOrmModule] Unable to connect to the database. Retrying (1)...
error: autentica��o do tipo password falhou para usu�rio "root"
    at Parser.parseErrorMessage (C:\Users\anton\angular\loja\node_modules\pg-protocol\src\parser.ts:369:69)
    at Parser.handlePacket (C:\Users\anton\angular\loja\node_modules\pg-protocol\src\parser.ts:188:21)     
    at Parser.parse (C:\Users\anton\angular\loja\node_modules\pg-protocol\src\parser.ts:103:30)
    at Socket.<anonymous> (C:\Users\anton\angular\loja\node_modules\pg-protocol\src\index.ts:7:48)
    at Socket.emit (node:events:511:28)
    at addChunk (node:internal/streams/readable:332:12)
    at readableAddChunk (node:internal/streams/readable:305:9)
    at Socket.Readable.push (node:internal/streams/readable:242:10)
    at TCP.onStreamRead (node:internal/stream_base_commons:190:23)

Eis o meu código

docker-compose.yaml

version: '3.5'
    
    services:
      postgres:
        image: postgres:latest
        environment:
          POSTGRES_USER: ${DB_USERNAME}
          POSTGRES_PASSWORD: ${DB_PASSWORD}
          PGDATA: /data/postgres
        volumes:
          - postgres:/data/postgres
        ports:
          - "5432:5432"
        networks:
          - postgres
        restart: unless-stopped
    
      pgadmin:
        image: dpage/pgadmin4
        environment:
          PGADMIN_DEFAULT_EMAIL: ${DB_ADMIN_EMAIL}
          PGADMIN_DEFAULT_PASSWORD: ${DB_PASSWORD}
        ports:
          - "8081:80"
        depends_on:
          - postgres
        networks:
          - postgres
    
    networks:
      postgres:
        driver: bridge
    
    volumes:
        postgres:

app.module.ts

@Module({
  imports: [
    UsuarioModule, 
    ProdutoModule,
    ConfigModule.forRoot({
      isGlobal: true
    }),
    TypeOrmModule.forRootAsync({
      useClass: DbConfigService,
      inject: [DbConfigService]
    })
  ]
})
export class AppModule {}

db.config.services.ts

@Injectable()
export class DbConfigService implements TypeOrmOptionsFactory {

  constructor(private configService: ConfigService) {}

  createTypeOrmOptions(): TypeOrmModuleOptions | Promise<TypeOrmModuleOptions> {
    return {
      type: "postgres",
      host: this.configService.get<string>('DB_HOST'),
      port: this.configService.get<number>('DB_PORT'),
      username: this.configService.get<string>('DB_USERNAME'),
      password: this.configService.get<string>('DB_PASSWORD'),
      database: this.configService.get<string>('DB_NAME'),
      entities: [],
      synchronize: true
    }
  }
}

.env

DB_HOST=127.0.0.1
DB_PORT=5432
DB_USERNAME=root
DB_PASSWORD=root
DB_NAME=db_loja
DB_ADMIN_EMAIL=admin@root.com
2 respostas

Olá, Antonio!

Pelo que pude observar, parece que você está tendo um problema de autenticação com o usuário "root". Isso pode estar acontecendo por alguns motivos. Vou te sugerir algumas possíveis soluções:

  1. Verifique se o usuário "root" foi criado corretamente no PostgreSQL. No seu arquivo docker-compose.yaml, você definiu as variáveis de ambiente POSTGRES_USER e POSTGRES_PASSWORD como ${DB_USERNAME} e ${DB_PASSWORD}, respectivamente. No seu arquivo .env, você definiu DB_USERNAME e DB_PASSWORD como "root". Portanto, o usuário "root" deveria existir no PostgreSQL. Você pode confirmar isso acessando o PostgreSQL através do pgAdmin e verificando se o usuário "root" está lá.

  2. Verifique se a senha do usuário "root" está correta. A senha do usuário "root" também deveria ser "root", de acordo com o seu arquivo .env. Você pode confirmar isso tentando se conectar ao PostgreSQL com o usuário "root" e a senha "root" através do pgAdmin.

  3. Verifique se a configuração do host está correta. No seu arquivo db.config.services.ts, você definiu o host como this.configService.get<string>('DB_HOST'), que é "127.0.0.1" de acordo com o seu arquivo .env. No entanto, no tutorial, o host deve ser "postgres" ao invés de "127.0.0.1". Você pode tentar alterar o valor de DB_HOST no seu arquivo .env para "postgres" e ver se isso resolve o problema.

  4. Certifique-se de que o banco de dados "db_loja" foi criado corretamente. Você pode confirmar isso acessando o PostgreSQL através do pgAdmin e verificando se o banco de dados "db_loja" está lá.

Espero que uma dessas sugestões possa te ajudar a resolver o problema. Lembre-se de que é sempre uma boa prática verificar as configurações do banco de dados e as credenciais do usuário quando você encontrar erros de autenticação.

Espero ter ajudado e bons estudos!

O erro persiste. Não sei mais o que fazer. Se não conseguir resolver vou ter que desistir de continuar com o curso.

No arquivo .env o host é 127.0.0.1, veja o print da página do curso:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Abaixo as telas das configurações:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade