MySQL 연결 오류: "공개 키 검색이 허용되지 않습니다."
Java의 MySQL Connector 8.0을 사용하여 MySQL 데이터베이스에 연결하려고 할 때. 11에서는 다음 예외가 발생할 수 있습니다.
java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
이 오류는 클라이언트가 서버에서 공개 키를 검색하려고 시도하고 있지만 이를 허용하도록 연결이 구성되지 않았음을 나타냅니다.
해결 방법
문제를 해결하려면 연결 문자열에 allowedPublicKeyRetrieval=true 클라이언트 옵션을 추가해야 합니다. 이렇게 하면 클라이언트가 자동으로 서버에 공개 키를 요청할 수 있습니다. 그러나 이 옵션을 true로 설정하면 악의적인 프록시가 MITM 공격을 수행하여 일반 텍스트 비밀번호를 얻을 수 있다는 점에 유의해야 합니다.
AllowPublicKeyRetrieval을 사용하는 연결 관리자의 예
다음 코드 조각은 AllowPublicKeyRetrieval 옵션을 포함하도록 ConnectionManager 클래스의 getConnection 메소드를 업데이트합니다.
<code class="java">public static Connection getConnection() throws SQLException { MysqlDataSource dataSource = new MysqlDataSource(); dataSource.setUseSSL(false); dataSource.setServerTimezone(serverTimeZone); dataSource.setServerName(serverName); dataSource.setDatabaseName(databaseName); dataSource.setPortNumber(portNumber); dataSource.setUser(user); dataSource.setPassword(password); dataSource.setAllowPublicKeyRetrieval(true); // Allow public key retrieval return dataSource.getConnection(); }</code>
추가 참고
테스트 또는 개발 목적으로 다음을 수행할 수 있습니다. 또한 제공된 솔루션에서 제안된 대로 useSSL=false를 설정하여 SSL을 비활성화하는 것도 고려해 보세요.
<code class="java">jdbc:mysql://localhost:3306/db?allowPublicKeyRetrieval=true&useSSL=false</code>
위 내용은 Java를 사용하여 MySQL에 연결할 때 \"공개 키 검색이 허용되지 않습니다\" 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!