You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java连接PostgreSQL认证失败求助:参数正确仍报错

PostgreSQL Java连接密码验证失败排查建议

我是一名.NET开发者,正在学习Java。通过Docker在localhost:5432运行了PostgreSQL实例,数据库名、用户名均为knowledgemap,密码为test123。.NET应用能正常连接并执行所有操作,但Java应用连接时报错:FATAL: password authentication failed for user "knowledgemap"。使用Windows 11笔记本,已在防火墙允许Java和Intellij IDEA访问网络,问题仍存在。

Java代码

package org.example;
import java.sql.*;

public class Main {
    public static void main(String[] args) throws SQLException {
        String url = "jdbc:postgresql://localhost:5432/knowledgemap";
        String username = "knowledgemap";
        String password = "test123";
        Connection db = DriverManager.getConnection(url, username, password);
    }
}

pom.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>Java_PostgresConnectionTest</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>21</maven.compiler.source>
        <maven.compiler.target>21</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.7.4</version>
        </dependency>
    </dependencies>

</project>

补充信息

  • PostgreSQL版本:PostgreSQL 16.3 (Debian 16.3-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
  • .NET连接字符串:UserID=knowledgemap;Password=test123;Host=localhost;Port=5432;Database=knowledgemap;
  • .NET驱动版本:Npgsql.EntityFrameworkCore.PostgreSQL v8.0.4
  • pg_hba.conf相关片段:
TYPE  DATABASE        USER            ADDRESS                 METHOD

local   all             all                                     trust

host    all             all             127.0.0.1/32            trust

host    all             all             ::1/128                 trust

local   replication     all                                     trust
host    replication     all             127.0.0.1/32            trust
host    replication     all             ::1/128                 trust

排查建议

  • 检查变量的隐形字符:复制粘贴密码或URL时可能带入不可见字符,手动重新输入username和password的内容,或通过System.out.println(username.length() + ":" + username)、System.out.println(password.length() + ":" + password)打印变量长度和内容,确认无多余字符。
  • 强制使用IPv4连接:Windows下localhost可能优先解析为IPv6地址::1,虽然pg_hba.conf允许该地址的信任连接,但可以尝试将JDBC URL改为jdbc:postgresql://127.0.0.1:5432/knowledgemap,强制使用IPv4连接排除潜在问题。
  • 查看PostgreSQL详细日志:进入Docker容器查看数据库日志,日志会记录连接失败的具体原因。执行命令:docker exec -it [容器ID/名称] tail -f /var/log/postgresql/postgresql-16-main.log(日志路径可能因镜像差异略有调整)。
  • 验证驱动兼容性:当前使用的postgresql驱动42.7.4理论上支持PostgreSQL 16,但可尝试升级到最新稳定版或降级到42.6.x版本,排除驱动版本适配问题。
  • 确认Docker端口映射:执行docker ps查看容器端口映射,确保5432端口已正确映射到主机的5432端口(显示为0.0.0.0:5432->5432/tcp或127.0.0.1:5432->5432/tcp)。
  • 用psql工具测试连接:在Windows命令行执行psql -h localhost -p 5432 -U knowledgemap -d knowledgemap,输入密码test123,验证是否能正常连接,排除数据库本身的认证配置问题。
  • 检查IDEA运行配置:确认IntelliJ IDEA的Run/Debug Configurations中没有通过环境变量、VM参数等覆盖代码中的username和password值。

内容的提问来源于stack exchange,提问作者Arun Kumar A.J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 20:14:52