jdbc连接mysql8.0

mysql版本8.0开始jdbc连接数据库的驱动变更com.mysql.cj.jdbc.Driver
同时密码存储方式改变为 caching_sha2_password
需要修改mysql配置文件中的default_authentication_plugin为mysql_native_password
并修改原有账户的加密方式:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
如果报错Unknown system variable 'query_cache_size',则为jdbc版本不一致导致,更换jdbc驱动版本即可
8.0.11下载地址:http://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.11
 出现警告: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.
只需要在数据库url后加上:useSSL=false
java.sql.SQLException: The server time zone value
时区错误,在url后添加:serverTimezone=UTC
mybatis的配置文件中直接使用&字符会出错,需用&来代替

示例代码:
Connection con;
         //驱动程序名
         String driver = "com.mysql.cj.jdbc.Driver";
         //URL指向要访问的数据库名mydata
         String url = "jdbc:mysql://localhost:3306/sakila?useSSL=false&serverTimezone=UTC";
         //MySQL配置时的用户名
         String user = "root";
         //MySQL配置时的密码
         String password = "root";
         //遍历查询结果集
         try {
             //加载驱动程序
             Class.forName(driver);
             System.out.println("加载驱动成功!");
             //1.getConnection()方法,连接MySQL数据库!!
             con = DriverManager.getConnection(url,user,password);
             System.out.println("链接数据库!");
             if(!con.isClosed())
                 System.out.println("Succeeded connecting to the Database!");
             //2.创建statement类对象,用来执行SQL语句!!
             Statement statement = con.createStatement();
             //要执行的SQL语句
             String sql = "select * from city";
             //3.ResultSet类,用来存放获取的结果集!!
             ResultSet rs = statement.executeQuery(sql);
             System.out.println("-----------------");
             System.out.println("执行结果如下所示:");  
             System.out.println("-----------------");  
             System.out.println("姓名" + "\t" + "职称");  
             System.out.println("-----------------");  
              
             String city_id = null;
             String city = null;
             while(rs.next()){
                 //获取stuname这列数据
                 city_id = rs.getString("city_id");
                 //获取stuid这列数据
                 city = rs.getString("city");

                 //输出结果
                 System.out.println(city_id + "\t" + city);
             }
             rs.close();
             con.close();
         } catch(ClassNotFoundException e) {   
             //数据库驱动类异常处理
             System.out.println("Sorry,can`t find the Driver!");   
             e.printStackTrace();   
             } catch(SQLException e) {
             //数据库连接失败异常处理
             e.printStackTrace();  
             }catch (Exception e) {
             // TODO: handle exception
             e.printStackTrace();
         }
     }

mybatis配置方式:
<environments default="mysql">
  <environment id="mysql">
   <transactionManager type="JDBC"/>
   <dataSource type="POOLED">
    <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/sakila?serverTimezone=UTC&amp;useSSL=false"/>
    <property name="username" value="root"/>
    <property name="password" value="root"/>
   </dataSource>
  </environment>
 </environments>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值