JDBC 连接 Mysql 过程中注意事项及各类问题解决方案

在JAVA连接mysql的过程中注意问题如下:

  java连接数据库的代码:

package javaDateBaseConnection;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class TestJavaDataBaseConnection {
    public static final String URL = "jdbc:mysql://localhost:3306/testjavadb?useSSL=false";
    public static final String USER = "root";
    public static final String PASSWORD = "Tanhao0508";
    
    public static void main(String[] args) throws Exception{
        Class.forName("com.mysql.jdbc.Driver");
        
        Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
        
        System.out.println(conn);
        
        Statement stmt = conn.createStatement();
        
        ResultSet rs = stmt.executeQuery("SELECT * FROM students");
        
        while (rs.next()) {
System.out.println(rs.getString(
"name")+" identity:"+rs.getString("identity")); } conn.close(); } }

按照正常的文档套路来操作时,首先会出现第一个 系统异常: 

Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

 解决方案:

  这是因为系统在加载类的时候找不到该类里没有咱们需要用到的jar包:mysql-connector-java 

       所以先下载: https://pan.baidu.com/s/1c1KNjtm 密码:eyrm   注意下载后先解压

  之后Eclipse导入外部JAVA包: 

  选择菜单栏中【Project】->【Properties】->【Java Build Path】命令。

  

  

   

  

当你完成这些步骤之后,运行你的java程序,你可能会遇到你的第二个 系统异常

Sat Jul 18 16:20:51 CST 2020 WARN: Establishing SSL connection without serve

 解决方案:

  需要设置你的mysql 全局系统等待时间:

  设置: set global wait_timeout = 1814400;

  查看效果:

   

 当你完成这步操作之后,请重启一下你的Mysql服务器,之后重写运行你的java程序,你可能会遇到你的第三个 系统异常

WARN: Establishing SSL connection without server's identity verification is not recommended.

解决方案:

  原因是MySQL在高版本需要指明是否进行SSL连接。
  在mysql连接字符串url中加入?useSSL=false 即可,(

    public static final String URL = "jdbc:mysql://localhost:3306/testjavadb?useSSL=false";

  )

 当你完成这些步骤之后,运行你的java程序,你可能会遇到你的最后一个 系统异常

java.sql.SQLException: Unable to load authentication plugin 'caching_sha2_password'.

解决方案:

  在此通过查资料详情解释说明下

为了提供更安全的密码加密,
MySQL8.0的首选默认认证插件是caching_sha2_password,
而不是mysql_native_password

  解决方式或者注意事项:

  1.对于MySQL 8.0的升级,身份验证插件现有帐户保持不变,包括’root’@'localhost’管理帐户的插件

  2.对于新的MySQL 8.0安装,在初始化数据目录时(使用 第2.10.1节“初始化数据目录”中的说明),将 ‘root’@'localhost’创建帐户,并且该帐户caching_sha2_password默认使用.

  3.对于新的MySQL 8.0安装,还想使用之前的密码认证方式请使用:

 

  当你查看你的Mysql 配置时,你会发现你的首选默认插件样式全部为 同一个:caching_sha2_password

select host,user,plugin from user;

 

   所以修改你的root 默认验证样式:

select host,user,plugin from user;
ALTER USER 'root'@'localhost'
  IDENTIFIED WITH mysql_native_password
  BY '你的mysql密码';

  之后重启你的Mysql服务器 ,运行java程序,这次就应该没问题的了.....吧。  

  

原文地址:https://www.cnblogs.com/bomdeyada/p/13336617.html