java - PostgresQL中如何使用SCRAM-SHA-256通过jdbc连接数据库

标签 java postgresql jdbc

那里
我正在尝试在 jdbc 中测试 SCRAM-SHA-256。

  public static void main(String[] args) throws SQLException {
        String url = "jdbc:postgresql://192.168.56.101:1521/gisdb";
        Properties props = new Properties();
        props.setProperty("user", "pguser");
        String scram = "SCRAM-SHA-256$4096:QNTBYMpbvZjbOx5RLM7rvA==$tuBD7Ek7niK8jyiuwjCGLH2EurqMNoIaclZhOXohyik=:2b0Ow951/1OPKsqzaGLWPyT+wVIXOs9dvY8TF2eTCVM=";
        props.setProperty("password", scram);
//        props.setProperty("password", "*******");

        Connection conn = DriverManager.getConnection(url, props);
        String databaseProductVersion = conn.getMetaData().getDatabaseProductVersion();
        System.out.println(databaseProductVersion);
    }

我的 pg_hba.conf :
hostssl all             all             192.168.0.0/16          scram-sha-256
#hostssl all             all             192.168.0.0/16          trust
select rolname,rolpassword from pg_authid;表明:
          rolname          |                                                              rolpassword
---------------------------+---------------------------------------------------------------------------------------------------------------------------------------
 pg_monitor                |
 pg_read_all_settings      |
 pg_read_all_stats         |
 pg_stat_scan_tables       |
 pg_read_server_files      |
 pg_write_server_files     |
 pg_execute_server_program |
 pg_signal_backend         |
 pguser                    | SCRAM-SHA-256$4096:PZNbiF6I5G1SVcoN9sTjJw==$xe8jrBS9iUn0ldoIV8moaAod06sYRbxsyyQaUbiuSQE=:2tpLS+eL1brme0Il0wcnsllkDBfDkaQ/II7iVJ3ecxM=
 test                      |
 postgres                  | SCRAM-SHA-256$4096:o1lyjT/acTglIuLsp6TF3Q==$pdWLZ8DuceZDwr9jla0WPzXXa3N3kWrjh9cPnrloP3w=:6hd8Ib7Od+ZZenItVoH4L+26oSiBxqp63WxO82PeonM=


当我使用 scram-sha-256 java代码中的加密密码字符串或prue密码进行连接,在日志文件中,显示FATAL: password authentication failed for user "pguser" .
当我将方法更改为 trustpg_hba.conf , 有用。

使用方法 scram-sha-256密码连接的方法?
我的 JDBC 驱动程序版本是 postgresql-42.2.12.jar

最佳答案

您必须提供明文密码,而不是 SCRAM 哈希。

关于java - PostgresQL中如何使用SCRAM-SHA-256通过jdbc连接数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61339099/

相关文章:

java - 运行 Maven2 构建时使用不同的 Java 源版本

sql - Noob SQL 在同一查询中插入和选择

postgresql - "\d"jdbc 程序失败

java - Netbeans 与 SQLite 的连接中出现 SQLite 错误或缺少数据库(没有此类表)

java - 创建您自己的 Swing 组件

java - 在java中使用for循环生成一些文本文件?

java - Java 序列化的效率如何?

ruby-on-rails-3 - 启动 rails3.1 应用时出现 Heroku 错误,缺少 postgres gem

sql - Postgres 连续时间间隔

java - Microsoft JDBC Driver 4.1 可以与 Microsoft ODBC Driver 1.0 一起使用吗?