高版本Mysql8.0通过连接数据库要注意:(为了方便演示直接写在程序里)
1、检查jar包是否是高版本的,如果不是更改其对应jar包
Mysql 8对应的jar包链接: https://pan.baidu.com/s/1XRlVwzGRTlmXJgsrBK2xkA 提取码: gbxc
2、高版本的JDBC注册驱动已经更改如下
public class JdbcTest01 { public static void main(String[] args) { try { //注册驱动 //低版本驱动书写 // Class.forName("com.mysql.jdbc.Driver"); //高版本驱动书写 Class.forName("com.mysql.cj.jdbc.Driver"); //获取连接 //低版本连接 //Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1","root","password") //高版本连接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true","root","password"); System.out.println("连接数据库"+conn+"成功"); //更改后就可以连接成功了 } catch (Exception e) { e.printStackTrace(); } } }工作台出现这样的错: Thu Oct 22 17:31:17 CST 2020 WARN: Establishing SSL connection without server’s identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn’t set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to ‘false’. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
原因是MySQL在高版本需要指明是否进行SSL连接。 useSSL=false 或者 useSSL = true
SSL协议提供服务主要: 1)认证用户服务器,确保数据发送到正确的服务器; . 2)加密数据,防止数据传输途中被窃取使用; 3)维护数据完整性,验证数据在传输过程中是否丢失;
当前支持SSL协议两层: SSL记录协议(SSL Record Protocol):建立靠传输协议(TCP)高层协议提供数据封装、压缩、加密等基本功能支持 SSL握手协议(SSL Handshake Protocol):建立SSL记录协议用于实际数据传输始前通讯双进行身份认证、协商加密 算法、 交换加密密钥等。
serverTimezone=Asia/Shanghai / /配置上海标准时间 serverTimezone=UTC //配置国际标准时间 首先,介绍一下什么是UTC,UTC,简称世界统一时间,跟北京时间相比,比北京早8个小时。如果设成UTC获取的时间总是比数据库里的时间快8小时。
allowPublicKeyRetrieval=true //允许检索公钥
