인증 유형 10이 지원되지 않아 Postgres DB에 연결할 수 없습니다.
나는 최근에 Postgres를 사용해 보았다.로컬에 설치(Postgre).SQL 13.0).Maven 프로젝트를 만들고 Spring Data JPA를 사용했지만 정상적으로 작동합니다.반면 Gradle 프로젝트를 사용해보니 DB에 접속이 되지 않아 다음과 같은 오류가 계속 발생합니다.
org.postgresql.displays.displayPSQLException:인증 타입 10은 지원되지 않습니다.클라이언트의 IP 주소 또는 서브넷을 포함하도록 pg_hba.conf 파일을 설정했는지, 드라이버가 지원하는 인증 방식을 사용하고 있는지 확인합니다.org.postgresql.core.v3로 이동합니다.Connection Factory Impl.do Authentication(Connection Factory Impl).java:614)~[postgresql-42.1.4.jar:42.1.4](org.postgresql.core.v3).Connection Factory Impl.open Connection Impl(Connection Factory Impl).java:222)~[postgresql-42.1.4.jar:42.1.4] org.postgresql.core에 있습니다.ConnectionFactory.openConnection(ConnectionFactory.java:49)~[postgresql-42.1.4.jar:42.1.4] at org.postgresql.jdbc.PgConnection.(PgConnection.java:194)~[postgresql-42.1.4.jar:42.1.4] (org.postgresql).driver.makeConnection(Driver.java:450)~[postgresql-42.1.4.jar:42.1.4] (org.postgresql).driver.connect(Driver.java:252)~[postgresql-42.1.4.jar:42.1.4](java.sql).java.sql의 Driver Manager.getConnection(Unknown Source) [na:1.8.0_261].org.postgresql.ds.common의 DriverManager.getConnection(Unknown Source) [na:1.8.0_261].BaseDataSource.getConnection(BaseDataSource.java:94) [postgresql-42.1.4.jar:42.1.4] at org.postgresql.ds.common.BaseDataSource.getConnection(BaseDataSource.java:79) [postgresql-42.1.4.jar:42.1.4]
JDB를 사용해 보았습니다.CTemplate도요동작하지 않다
이 투고를 참조하여 pg_hba.cfg 파일을 수정했습니다.-동작하지 않습니다.
사용되지 않는 Lib of - 도 동작하지 않는다.
이 문제에 대한 해결책을 제시해 주세요.
내 코드 및 구성:
@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)
Postgre에서 아래의 단계를 적용하여 비슷한 문제를 해결했습니다.SQL 버전 13:
password_encryption
로로 합니다.md5
postgresql.conf
Windows: C:\Program Files\PostgreSQL\13\data\postgresql.conf
GNU/Linux: /etc/postgresql/13/main/postgresql.conf
scram-sha-256
로로 합니다.md5
pg_hba.conf
Windows: C:\Program Files\PostgreSQL\13\data\pg_hba.conf
GNU/Linux: /etc/postgresql/13/main/pg_hba.conf
host all all 0.0.0.0/0 md5
비밀번호 변경(이 복원 비밀번호는 md5 형식).
::
ALTER ROLE postgres WITH PASSWORD 'root'
;「이행」을 설정해 .
listen_addresses = '*'
postgresql.conf
실제 가동 환경 이외의 환경에서 작업하는 경우.
디렉토리 C:\Program Files\Postgre에서 pg_hba.conf 파일을 가져옵니다.SQL\13\data\pg_hba.conf
또한 Column Method에서 scram-sha-256을 trust로 간단히 변경합니다.
나한테는 먹혔어!
Wiki에 따르면 지원되는 JDBC 드라이버는SCRAM-SHA-256
42.2.0.는 41.입니다.2.합니다.걸로로해해해해해
,,, (이,,)pom.xml
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.0</version>
</dependency>
「」를 설정해 .password_encryption
로로 합니다.scram-sha-256
도됩니다(v13의 디폴트값).scram-sha-256
이 있는 라도)md5
pg_hba.conf
.
현재 Postgre는 클라이언트 측에서 오래된 JDBC 드라이버 버전을 사용하고 있지만 이 인증 방식을 지원하지 않습니다.SQL은 3년 전에 v10에서 도입했습니다.
JDBC 방송사 다른 방법으로는 '보다 낫다'를 설정하는 이 있습니다.password_encryption
으로 md5
모든 비밀번호를 리셋하고 보안이 낮은 상태로 살아야 합니다.
<?xml version="1.0" encoding="UTF-8"?>
4.0.0
<groupId>org.example</groupId>
<artifactId>postgresJDBC</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<java.version>11</java.version>
<maven.compiler.target>${java.version}</maven.compiler.target>
<maven.compiler.source>${java.version}</maven.compiler.source>
</properties>
<dependencies>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.18</version>
</dependency>
</dependencies>
postgresql 9.1+를 사용하는 경우 maven 의존성을 확인해야 합니다.
maven 의존성에 대해 알아보려면 이 링크를 참조하십시오.Postgre를 추가하려면 어떻게 해야 합니까?SQL Driver는 Maven의 종속기업입니까?
pg_hba.conf에서 Method를 "trust"로 변경합니다.
이 작업을 수행하는 데 어려움을 겪고 있는 경우Docker
:
- 번째 : 를 첫 the : the테 the the the the로 합니다.
-e POSTGRES_HOST_AUTH_METHOD=md5
(doc)
docker run -e POSTGRES_HOST_AUTH_METHOD=md5 -e POSTGRES_PASSWORD=doesntmatter -p 5432:5432 --name CONTAINERNAME -d postgres
- 번째: 허용: 허용: 허용
md5
다음과 같이 합니다.
docker exec -ti -u postgres CONTAINERNAME bash -c "echo 'password_encryption=md5' >> /var/lib/postgresql/data/postgresql.conf"
- 세 번째: 컨테이너 재시작
docker restart CONTAINER NAME
- 번째: " ": " " " 를 다시 .
postgres
in " "md5
변경
docker exec -ti -u postgres CONTAINERNAME psql
alter role postgres with password 'THE-NEW-PASSWORD';
* ★★★★★★★★★★★★★*scram-sha-256
md5보다 훨씬 낫다(doc)
다음을 사용합니다.
- wget https://jdbc.postgresql.org/download/postgresql-42.2.24.jar
하이브 라이브러리에 복사
- sudo mv postgresql-42.24.jar /opt/syslog/lib/postgresql-42.24.jar
postgres 라이브러리를 업데이트하면 이 문제를 해결할 수 있습니다.
버전 12.6에서는 정상적으로 동작합니다.Postgre 다운그레이드만 하면 됩니다.SQL
포스트그레스 parentspring parent.spring version을 되는 .13 : [ v13 ]Modified spring parent version: it was on 1.4; made it to match to 2.14. Finally update maven dependency and re-run the application
이치노
제안 사항:
현재 JDBC 드라이버가 도움이 됩니다(예: postgresql-42.3.6.jar).
스파크 인스톨 디렉토리의 /jars 폴더에 카피합니다(이 예에서는, 1대의 머신이 있는 것을 전제로 하고 있습니다).
Python - pyspark를 일반 라이브러리로 Import할 수 있도록 "findspark" 설치
도움이 되었으면 하는 예를 다음에 제시하겠습니다.
import findspark findspark.init() from pyspark.sql import SparkSession sparkClassPath = "C:/spark/spark-3.0.3-bin-hadoop2.7/jars" spark = SparkSession \ .builder \ .config("spark.driver.extraClassPath", sparkClassPath) \ .getOrCreate() df = spark.read \ .format("jdbc") \ .option("url", "jdbc:postgresql://{YourHostName}:5432/{YourDBName}") \ .option("driver", "org.postgresql.Driver") \ .option("dbtable", "{YourTableName}") \ .option("user", "{YourUserName") \ .option("password", "{YourSketchyPassword") \ .load()
pgadmin을 아직 설치하지 않은 경우 설치합니다.
도커 경유로 시험해 보다
postgresql을 다운로드해야 합니다.jar를 .../jre/lib/ext/폴더로 이동합니다.그것은 나에게 효과가 있었다.
pom.xml의 Postgres에 최신 maven 의존관계 사용
ipv4 local connect에 대한 신뢰 변경은 성공했습니다.
솔루션:
구입하다pg_hba.conf
디렉토리 내의 파일C:\Program Files\PostgreSQL\13\data\pg_hba.conf
또한 Column Method에서 scram-sha-256을 trust로 간단히 변경합니다.
이 문제에 대한 해결책은 버전 9.6을 사용하는 것이라고 생각합니다.버전 변경 후 정상적으로 동작합니다.
pg_hba.conf를 엽니다.신뢰할 IPv4 로컬 연결 설정
언급URL : https://stackoverflow.com/questions/64210167/unable-to-connect-to-postgres-db-due-to-the-authentication-type-10-is-not-suppor
'programing' 카테고리의 다른 글
ES6/ES7 구문을 사용하여 jQuery UI를 가져오려면 어떻게 해야 합니까? (0) | 2023.02.28 |
---|---|
타임스탬프에 가장 적합한 Mongoose 스키마 타입 (0) | 2023.02.28 |
하이버네이트를 사용한 Spring Boot에서의 데이터베이스 이행 처리 방법 (0) | 2023.02.28 |
BEGIN - PL/SQL에서 Atomic 트랜잭션을 종료합니다. (0) | 2023.02.28 |
AngularJS $location이 경로를 변경하지 않음 (0) | 2023.02.28 |