문제 설명
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException : 데이터베이스 서버에 대한 연결을 만들 수 없습니다.
분석
MySQL은 잘못된 드라이버를 사용.
솔루션
는 JDBC 항아리 패키지 변경
JDBC 드라이버 및 연결 문자열 URL의 이름을 변경
// MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL
//static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
//static final String DB_URL = "jdbc:mysql://localhost:3306/xxxx";
// MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URL
//如果MySQL-connector-java用的6.0以上的,则driver要使用:com.mysql.cj.jdbc.Driver
//private static String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
//private static String DB_URL = "jdbc:mysql://xxx.xxx.xxx.xxx:3306/xxxx?useSSL=false&serverTimezone=UTC";
참고 :
url은 시간대 설정을 추가해야합니다 :
serverTimezone = GMT % 2B8
(동쪽 여덟 지역의 대신 그리니치 표준시 %의 2B8)
로 설정할 수있다 : 상하이 serverTimezone = UTC serverTimezone = (이상 중국 빠르면 8 시간 시간과, 중국, 아시아 / 상해 또는 아시아 / 홍콩 선택할 수 있습니다 경우)
명시 적으로, MySQL의 5.5.45+ 설정하지 않으면 5.6.26+ 및 5.7.6+ 기본 버전은 SSL 연결이 필요합니다.
SSL 연결을 사용하지 않는 현재의 애플리케이션을 충족하기 위해, verifyServerCertificate 속성은 '거짓'으로 설정됩니다.
SSL 연결을 사용하지 않는 경우, 당신은 명시 적으로 SSL 연결을 사용하지 = false를 설정 useSSL해야합니다.
SSL 연결을 사용해야하는 경우, 서버 인증서 유효성 검사에 대한 신뢰 저장소를 제공하기 위해 필요하며, 세트 useSSL 사실 =
SSL - 보안 소켓 레이어 (보안 소켓 레이어)
메이븐
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<!--<scope>runtime</scope>-->
<version>8.0.11</version>
</dependency>
참조 기사