1.刚开始自己没有使用JAVAEE的eclipse去连接MySQL,结果死活连接不上,驱动根本无法加载,后来使用JAVAEE的eclipse才可以。
JDBC架包(mysql8.0版):
链接:https://pan.baidu.com/s/1pLxqPKKYXjez1e6LT_fwUQ
提取码:cns1
2.直接上代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Demo {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
Connection conn = DriverManager.getConnection("jdbc:mysql://数据库IP地址(本地为localhost):port/库名?useSSL=false&serverTimezone=GMT", "账号", "密码");
System.out.println(conn);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这里需要注意MySQL8.0和低版本不同的地方:DB_DRIVER要写com.mysql.cj.jdbc.Driver,并且DB_URL后面要加上useSSL和serverTimezone
3.关于 ?useSSL=false&serverTimezone=GMT 这行代码:
3.1:如果不适用serverTimezone=GMT,会报以下错误:
- 原因:服务器时区值“????±××?±?无法识别或代表一个以上的时区。如果希望利用时区支持,则必须配置服务器或JDBC驱动程序(通过serverTimezone配置属性)以使用更具体的时区值。出现这个的原因是因为 mysql返回的时间总是有问题,比实际时间要早8小时。
- 解决方案:在jdbc连接的url后面加上serverTimezone=GMT即可解决问题,如果需要使用gmt+8时区
3.2、如果不适用useSSL=false,会报以下错误:
- 但是这并不影响你的操作
- 原因:不建议在没有服务器身份验证的情况下建立SSL连接。根据MySQL 5.5.45+,如果未设置显式选项,则默认情况下必须建立5.6.26+和5.7.6+要求的SSL连接。为了符合不使用SSL的现有应用程序,verifyServerCertificate属性设置为“false”。您需要通过设置useSSL=false来显式禁用SSL,或者设置useSSL=true并提供用于服务器证书验证的信任库(测试学习阶段我们没必要搞那么复杂)。
- 解决方案:所以只要在url后面添加useSSL=false语句即可。