인증 플러그인 'caching_sha2_password'를로드 할 수 없음 문제 해결 방법
이클립스에서 응용 프로그램을 시작했을 때 나는 이것을 얻었습니다-사용할 방언을 찾을 수 없습니다. java.sql.SQLException : 인증 플러그인 'caching_sha2_password'를로드 할 수 없습니다.
java.sql.SQLException에서 : 인증 플러그인 'caching_sha2_password'를로드 할 수 없습니다. at com.mysql.jdbc.SQLError.createSQLException (SQLError.java:868) at com.mysql.jdbc.SQLError.createSQLException (SQLError.java:864) at at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication (MysqlIO. java : 1746) at com.mysql.jdbc.MysqlIO.doHandshake (MysqlIO.java:1226) at com.mysql.jdbc.ConnectionImpl.coreConnect (ConnectionImpl.java:2191) at at com.mysql.jdbc.ConnectionImpl. connectOneTryOnly (ConnectionImpl.java:2222) at com.mysql.jdbc.ConnectionImpl.createNewIO (ConnectionImpl.java:2017) at com.mysql.jdbc.ConnectionImpl. (ConnectionImpl.java:779) at com.mysql.jdbc .JDBC4Connection. (JDBC4Connection.java:47) at sun.reflect.NativeConstructorAccessorImpl.newInstance0 (Native Method) at at sun.reflect.
MySQL 8.0.4부터 MySQL 서버용 기본 인증 플러그인 을 mysql_native_password 에서 caching_sha2_password 로 변경했습니다 .
아래 명령을 실행하여 문제를 해결할 수 있습니다.
샘플 사용자 이름 / 비밀번호 => 학생 / pass123
ALTER USER 'student'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pass123';
자세한 내용은 공식 페이지를 참조하십시오 : MySQL Reference Manual
잘못된 mysql_connector를 사용하고있을 수 있습니다.
동일한 mysql 버전의 커넥터 사용
한 Spring Boot 앱 에서이 오류가 발생했지만 다른 앱에서는 발생하지 않았습니다. 마지막으로 작동하지 않는 Spring Boot 버전은 2.0.0.RELEASE이고 작동하는 버전은 2.0.1.RELEASE였습니다. 그 결과 MySQL 커넥터 (5.1.45와 5.1.46)에 차이가 생겼습니다. 시작할 때이 오류가 발생하는 앱의 Spring Boot 버전을 업데이트했으며 이제 작동합니다.
mysql-connector "lib 패키지를 아래와 같이 mysql 버전으로 업그레이드합니다. 8.0.13 버전을 사용하고 있으며 pom에서 버전을 변경했습니다.
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
<version>8.0.13</version>
</dependency>
이 후에 내 문제가 해결되었습니다.
이전 커넥터를 삭제하고 새 버전 (mysql-connector-java-5.1.46)을 다운로드하기 만하면됩니다.
mysql 8.0.12를 사용하고 있으며 mysql 커넥터를 mysql-connector-java-8.0.12로 업데이트하면 문제가 해결되었습니다.
누군가에게 도움이되기를 바랍니다.
위의 회신에서 언급했듯이 :
MySQL 8.0.4부터 MySQL 팀은 MySQL 서버용 기본 인증 플러그인을 mysql_native_password에서 caching_sha2_password로 변경했습니다.
따라서이 문제를 해결하는 방법에는 세 가지가 있습니다.
1. drop USER 'user_name'@'localhost';
flush privileges;
CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'user_name';
GRANT ALL PRIVILEGES ON * . * TO 'user_name'@'localhost';
ALTER USER 'user_name'@'localhost' IDENTIFIED WITH mysql_native_password BY
'user_name';
2. drop USER 'user_name'@'localhost';
flush privileges;
CREATE USER 'user_name'@'localhost' IDENTIFIED WITH mysql_native_password BY 'user_name';
GRANT ALL PRIVILEGES ON * . * TO 'user_name'@'localhost'
3. If the user is already created, the use the following command:
ALTER USER 'user_name'@'localhost' IDENTIFIED WITH mysql_native_password BY
'user_name';
이 Murach JSP 책 에서 기성품 프로젝트로 작업 할 때 NetBeans에서이 문제가 발생했습니다 . 이 문제는 MySQL 8.0.13 데이터베이스에서 5.1.23 커넥터 J를 사용하여 발생했습니다. 이전 드라이버를 새 드라이버로 교체해야했습니다. Connector J를 다운로드 한 후 세 단계를 거쳤습니다.
NetBeans 프로젝트 커넥터 J를 교체하는 방법 :
NetBeans에서 프로젝트 탭 옆에있는 파일 탭을 클릭합니다. mysql-connector-java-5.1.23.jar 또는 기존 커넥터를 찾으십시오. 이 이전 커넥터를 삭제하십시오. 새 커넥터를 붙여 넣습니다.
프로젝트 탭을 클릭하십시오. Libraries 폴더로 이동합니다. 이전 mysql 커넥터를 삭제하십시오. Libraries 폴더를 마우스 오른쪽 버튼으로 클릭합니다. Add Jar / Folder를 선택하십시오. 새 커넥터를 넣은 위치로 이동하고 열기를 선택합니다.
프로젝트 탭에서 프로젝트를 마우스 오른쪽 버튼으로 클릭합니다. 팝업 메뉴 하단에서 데이터 소스 해결을 선택합니다. 연결 추가를 클릭하십시오. 이 시점에서 NetBeans는 앞으로 건너 뛰고 이전 커넥터를 사용한다고 가정합니다. 건너 뛴 창으로 돌아가려면 뒤로 버튼을 클릭합니다. 이전 커넥터를 제거하고 새 커넥터를 추가하십시오. 다음을 클릭하고 연결 테스트가 작동하는지 확인하십시오.
비디오 참조를 위해 이것이 유용하다는 것을 알았습니다 . IntelliJ IDEA의 경우 이것이 유용하다는 것을 알았습니다 .
"caching_sha2_password"플러그인과 함께 제공된 새 MySQL 버전에 문제가 있습니다. 아래 명령을 따라 해결하십시오.
DROP USER 'your_user_name'@'%';
CREATE USER 'your_user_name'@'%' IDENTIFIED WITH mysql_native_password BY 'your_user_password';
GRANT ALL PRIVILEGES ON your_db_name.* TO 'your_user_name'@'%' identified by 'your_user_password';
또는 아래 명령을 사용하여 권한을 그대로 유지할 수 있습니다.
ALTER USER your_user_name IDENTIFIED WITH mysql_native_password;
"mysql-connector"lib 패키지를 업데이트하는 것이 더 낫다고 생각합니다. 그래야 데이터베이스가 더 안전 할 수 있습니다.
버전 8.0.12의 mysql을 사용하고 있습니다. mysql-connector-java를 버전 8.0.11로 업데이트했을 때 문제가 사라졌습니다.
이것은 MySQL8이 암호의 암호화를 변경했기 때문에 업데이트해야하는 MySQL 용 커넥터 일 수 있습니다. 따라서 이전 커넥터는 암호를 잘못 암호화합니다.
Java 커넥터에 대한 maven repo는 여기 에서 찾을 수 있습니다 .
flyway 플러그인을 사용하는 경우 업데이트 도 고려해야 합니다 !
Then you can simply update your maven pom with:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.17</version>
</dependency>
Or for others who use Gradle, you can update build.gradle with:
buildscript {
ext {
...
}
repositories {
...
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
classpath('mysql:mysql-connector-java:8.0.11')
}
}
If you can update your connector to a version, which supports the new authentication plugin of MySQL 8, then do that. If that is not an option for some reason, change the default authentication method of your database user to native.
I did exactly the same issue using the dependency below:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency>
I just change to version 46 and everything works.
remove the connect .jar file if you added the multiple version connector jar file only add the connector jar file that match with your sql version.
Another cause might be the fact that you're pointing to the wrong port.
Make sure you are actually pointing to the right SQL server. You may have a default installation of MySQL running on 3306 but you may actually be needing a different MySQL instance.
Check the ports and run some query against the db.
'IT TIP' 카테고리의 다른 글
| jquery 데이터 테이블 숨기기 열 (0) | 2020.12.09 |
|---|---|
| iOS : 기기가 회전 한 후 기능을 실행하는 방법 (Swift) (0) | 2020.12.09 |
| 가능한 한 쉽게 다형성을 설명하십시오. (0) | 2020.12.09 |
| file_get_contents ()가 UTF-8 문자를 분리합니다. (0) | 2020.12.09 |
| ValueError : 문자열을 float로 변환 할 수 없습니다 : id (0) | 2020.12.08 |
