PostgreSQL连接密码认证失败但PgAdmin可正常连接求助
连接PostgreSQL数据库时遇到以下认证错误:
[auth][cause]: error: password authentication failed for user "user"
但使用完全相同的凭据,通过PgAdmin却能正常连接,应用代码和psql命令行都无法成功建立连接。
相关配置文件
docker-compose.yaml
services: postgres: image: postgres:latest container_name: postgres restart: always environment: POSTGRES_DB: auth_db POSTGRES_USER: user POSTGRES_PASSWORD: password ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data pgadmin: image: dpage/pgadmin4 container_name: pgadmin restart: always environment: PGADMIN_DEFAULT_EMAIL: user@example.com PGADMIN_DEFAULT_PASSWORD: password ports: - "5050:80" volumes: - pgadmin_data:/var/lib/pgadmin depends_on: - postgres volumes: postgres_data: pgadmin_data:
.env
AUTH_DATABASE_HOST="localhost" AUTH_DATABASE_PORT=5432 AUTH_DATABASE_NAME="auth_db" AUTH_DATABASE_USER="user" AUTH_DATABASE_PASSWORD="password"
Node.js连接池代码(pg库)
import { Pool } from "pg"; export const pool = new Pool ({ host: process.env.AUTH_DATABASE_HOST, port: parseInt(process.env.AUTH_DATABASE_PORT!, 10), // 10 TO MAKE IT A BASE10 database: process.env.AUTH_DATABASE_NAME, user: process.env.AUTH_DATABASE_USER, password: process.env.AUTH_DATABASE_PASSWORD, })
命令行测试结果
尝试用psql直接连接时,同样触发认证错误:
psql -h localhost -U user -d auth_db
Password for user user:
psql: error: connection to server at "localhost" (::1), port 5432 failed: FATAL: password authentication failed for user "user"
环境信息
Windows系统,使用Docker Desktop(基于Hyper-V,未启用WSL)
用户权限信息
"user" "auth_db" "public" "users" "INSERT"
"user" "auth_db" "public" "users" "SELECT"
"user" "auth_db" "public" "users" "UPDATE"
"user" "auth_db" "public" "users" "DELETE"
"user" "auth_db" "public" "users" "TRUNCATE"
"user" "auth_db" "public" "users" "REFERENCES"
"user" "auth_db" "public" "users" "TRIGGER"
内容的提问来源于stack exchange,提问作者zouker

