我最近try 过博士后.在本地安装(PostgreSQL 13.0).

组织.postgresql.util.PSQLException:身份验证类型10不是

我也try 过使用JDBCTemplate.不行

修改了pg_hba.引用this个帖子的cfg文件-不起作用

使用了不推荐使用的库-也不起作用.

请给我一个解决这个问题的方法.

我的代码和配置:

    @Configuration
    public class DataSourceConfig {
    
        
        @Bean
        public DriverManagerDataSource getDataSource() {
            DriverManagerDataSource dataSourceBuilder = new DriverManagerDataSource();
            dataSourceBuilder.setDriverClassName("org.postgresql.Driver");
            dataSourceBuilder.setUrl("jdbc:postgresql://localhost:5432/postgres");
            dataSourceBuilder.setUsername("postgres");
            dataSourceBuilder.setPassword("root");
            return dataSourceBuilder;
        }
        
    }



@Component
public class CustomerOrderJDBCTemplate implements CustomerOrderDao{
    
    private DataSource dataSource;
    
    private JdbcTemplate jdbcTemplateObject;

    @Autowired
    ApplicationContext context;
    
    public void setDataSource() {
        //Getting Bean by Class
        DriverManagerDataSource dataSource = context.getBean(DriverManagerDataSource.class);
        this.dataSource = dataSource;
        this.jdbcTemplateObject = new JdbcTemplate(this.dataSource);
    }

@Override
    public Customer create(Customer customer) {
        setDataSource();
        String sql = "insert into CustomerOrder (customerType, customerPayment) values (?, ?)";
        //jdbcTemplateObject.update(sql, customerOrder.getCustomerOrderType(), customerOrder.getCustomerOrderPayment());
        
        KeyHolder holder = new GeneratedKeyHolder();
        jdbcTemplateObject.update(new PreparedStatementCreator() {
            @Override
            public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
                PreparedStatement ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
                ps.setString(1, customer.getType());
                ps.setString(2, customer.getPayment());
                return ps;
            }
        }, holder);

        long customerId = holder.getKey().longValue();
        customer.setCustomerID(customerOrderId);
        return customer;
        
    }

}

依赖关系

implementation('org.springframework.boot:spring-boot-starter-web')
    compile("org.springframework.boot:spring-boot-devtools")
    compile(group: 'org.postgresql', name: 'postgresql', version: '42.1.4')
    compile("org.springdoc:springdoc-openapi-ui:1.4.1")
    compile("org.springframework:spring-jdbc:5.2.5.RELEASE")

password_encryption的设置如下:

postgres=# show password_encryption;
 password_encryption
---------------------
 scram-sha-256
(1 row)

推荐答案

我通过在PostgreSQL Version 13中应用以下步骤解决了类似问题:

  1. 将密码_加密更改为md5.

    档案:C:\Program Files\PostgreSQL\13\data\postgresql.conf

    enter image description here

  2. 在主机设置中将scram-sha-256更改为md5.

    档案:C:\Program Files\PostgreSQL\13\data\pg_hba.conf.

    托管所有0.0.0.0/0 md5

    enter image description here

  3. 更改密码(此恢复密码为md5格式).

    例:ALTER ROLE postgres WITH PASSWORD 'root'

  4. 如果是非生产性工作,请确保设置为listen_addresses = '*'

    档案:C:\Program Files\PostgreSQL\13\data\postgresql.conf

Postgresql相关问答推荐

PostgreSQL解释分析实际时间不加总

PostgreSQL无效语法

无法在kubernetes中设置postgres复制

supabase 中的交易

在Go中从Kafka读取并写入PostgreSQL时如何处理错误?

PostgreSQL 中的 Datum 数据类型是什么以及它的用途是什么?

带有 -C 选项的 pg_restore 不会创建数据库

如何确定 NULL 是否包含在 Postgres 的数组中?

Postgres jsonbNOT contains运算符

如何在 PostgreSQL 中插入多行

manage.py 迁移时必须是关系 django_site 的所有者

如何在 postgres 中使用 json_populate_recordset 解析 json

设置 Phoenix 框架和 Ecto 以使用 UUID:如何插入生成的值?

如何增加 max_locks_per_transaction

向 Postgres 整数数组添加值

如何使用 PostgreSQL 触发器来存储更改(SQL 语句和行更改)

使用 Postgresql 数据库(OSX Lion)创建 Rails 3.1 应用程序

由于不支持身份验证类型 10,无法连接到 Postgres DB

错误:索引表达式中的函数必须在 Postgres 中标记为 IMMUTABLE

在 Select (PostgreSQL/pgAdmin) 中将布尔值返回为 TRUE 或 FALSE