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

PostgreSQL SCRAM认证报错:JDBC未提供密码问题求助

问题解决步骤

1. 补全数据库连接的认证参数

代码里已经定义了dbuser和password变量,但调用DriverManager.getConnection()时只传了数据库URL,没传递用户名和密码,这直接导致PostgreSQL服务器要求SCRAM认证时无法获取密码,触发报错。

修改连接代码:

// 原代码
Connection c = DriverManager.getConnection(url);

// 修改后
Connection c = DriverManager.getConnection(url, dbuser, password);

2. 修复SQL注入漏洞(必做)

当前代码直接拼接用户输入到SQL语句里,不仅会导致输入含特殊字符(比如单引号)时SQL语法错误,还存在严重的SQL注入风险。改用预编译的PreparedStatement:

替换原有的Statement相关代码:

// 原代码
Statement stmt = c.createStatement();
String sql = "INSERT INTO passageiros(nomeP,destinopretendido) VALUES ('" +
        nomePassageiro + "','" + destinopretendido + "');";
stmt.executeUpdate(sql);
stmt.close();

// 修改后
String sql = "INSERT INTO passageiros(nomeP,destinopretendido) VALUES (?, ?);";
PreparedStatement pstmt = c.prepareStatement(sql);
pstmt.setString(1, nomePassageiro);
pstmt.setString(2, destinopretendido);
pstmt.executeUpdate();
pstmt.close();

3. 额外排查项(可选)

  • 确认PostgreSQL JDBC驱动版本:建议使用42.2.0及以上版本,该版本开始原生支持SCRAM-SHA-256认证
  • 检查PostgreSQL的pg_hba.conf配置:确保本地连接的认证规则设置为scram-sha-256,且对应数据库用户的密码是用SCRAM方式加密的

内容的提问来源于stack exchange,提问作者andre Sousa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:40:25