连接到MySQL数据库时有关SSL连接的警告

在尝试使用Java连接到MySQL数据库时遇到SSL连接警告。错误提示表明存在SSL配置问题。解决方案包括修改连接URL以禁用SSL,或者使用特定版本的mysql-connector。另外,可以下载OpenSSL并设置环境,或者在开发模式下关闭服务器验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文翻译自:Warning about SSL connection when connecting to MySQL database

With the two classes below, I've tried connect to a MySQL database. 在下面的两个类中,我尝试连接到MySQL数据库。 However, I always get this error: 但是,我总是会收到此错误:

Wed Dec 09 22:46:52 CET 2015 WARN: Establishing SSL connection without server's identity verification is not recommended. 2015年12月09日星期三22:46:52警告:不建议在没有服务器身份验证的情况下建立SSL连接。 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. 根据MySQL 5.5.45 +,5.6.26 +和5.7.6+的要求,如果未设置显式选项,则默认情况下必须建立SSL连接。 For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. 为了与不使用SSL的现有应用程序兼容,将verifyServerCertificate属性设置为'false'。 You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification. 您需要通过设置useSSL = false来显式禁用SSL,或者设置useSSL = true并为服务器证书验证提供信任库。

This is the test class with the main method: 这是带有main方法的测试类:

public class TestDatabase {

    public static void main(String[] args) {
        Database db = new Database();
        try {
            db.connect();
        } catch (Exception e) {
            e.printStackTrace();
        }
        db.close();
    }
}

This is the Database class: 这是Database类:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Database {

    private Connection con;

    public void connect() throws Exception{

        if(con != null) return;

        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            throw new Exception("No database");
        }

        String connectionURL = "jdbc:mysql://localhost:3306/Peoples";

        con = DriverManager.getConnection(connectionURL, "root", "milos23");        
    }

    public void close(){
        if(con != null){
            try {
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

#1楼

参考:https://stackoom.com/question/2JSJg/连接到MySQL数据库时有关SSL连接的警告


#2楼

Your connection URL should look like the below, 您的连接网址应如下所示,

jdbc:mysql://localhost:3306/Peoples?autoReconnect=true&useSSL=false

This will disable SSL and also suppress the SSL errors. 这将禁用SSL并抑制SSL错误。


#3楼

An alternative method would be: 一种替代方法是:

Properties properties = new Properties();
properties.setProperty("user", "root");
properties.setProperty("password", "milos23);
properties.setProperty("useSSL", "false");
properties.setProperty("autoReconnect", "true");

try (Connection conn = DriverManager.getConnection(connectionUrl, properties)) {
...
} catch (SQLException e) {
...
}

Although, I don't think the auto-reconnect setting is needed to remove the warning. 虽然,我认为不需要自动重新连接设置即可删除警告。


#4楼

the new versions of mysql-connector establish SSL connection by default ...to solve it: 新版本的mysql-connector默认情况下建立SSL连接...以解决该问题:

Download the older version of mysql-connector such as mysql-connector-java-5.0.8.zip 下载较旧版本的mysql-connector,例如mysql-connector-java-5.0.8.zip

. . or . 要么 。 . Download OpenSSL for Windows and follow the instructions how to set it 下载适用于Windows的OpenSSL并按照说明进行设置


#5楼

Use this to solve the problem in hive while making connection with MySQL 与MySQL建立连接时,用它来解决蜂巢中的问题

<property>
   <name>javax.jdo.option.ConnectionURL</name>
   <value>jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true&amp;autoReconnect=true&amp;useSSL=false</value>
   <description>metadata is stored in a MySQL server</description>
</property>

#6楼

如何使用SSL但关闭服务器验证(例如在您自己的计算机上处​​于开发模式时):

jdbc:mysql://localhost:3306/Peoples?verifyServerCertificate=false&useSSL=true
<think>好的,我现在需要帮助用户解决如何在IntelliJ IDEA中配置MySQL 8.0.41数据库连接的问题。首先,我得回想一下之前处理类似问题的经验,以及用户提供的引用资料中的信息。用户提到了几个引用,其中引用[1]、[4]和[3]都涉及MySQL连接器的使用和配置步骤,而引用[2]和[3]提到了相关的软件版本,比如IDEA 2017.1.1、Tomcat、JDK 1.8等。 首先,我需要确认用户使用的IntelliJ IDEA版本是否支持MySQL 8.0.41。虽然引用[2]提到的是IDEA 2017.1.1,但可能用户现在使用的是较新版本。过,通常来说,配置步骤在同版本中差异大,但驱动版本可能需要适配。根据引用[4],用户需要下载mysql-connector-java-8.0.21,但用户现在使用的是MySQL 8.0.41,所以可能需要更高版本的连接器,比如8.0.30,如引用[1]提到的。过,实际上,MySQL Connector/J的版本通常与MySQL服务器版本兼容,8.0.x的连接器应该支持8.0.x的服务器,所以用户可能需要下载对应版本的驱动。 接下来,配置的步骤大致分为几个部分:下载驱动、添加为库、配置数据库连接。用户需要先在项目中创建lib文件夹,将驱动jar包放入,并添加到库中。然后,在IDEA的数据库工具中添加MySQL数据源,填写主机、端口、数据库名、用户名和密码,测试连接是否成功。如果遇到区问题或SSL问题,可能需要调整连接参数,如设置serverTimezone=UTC或useSSL=false。 另外,用户可能遇到的常见问题包括驱动类找到,这可能是因为驱动版本正确或未正确添加为库。引用[4]中提到下载8.0.21版本,但用户需要确认是否与8.0.41兼容。根据MySQL官方文档,8.0.x的连接器应该支持同系列的服务器,所以使用8.0.30或更高版本的连接器可能更合适。 此外,代码中如果用户需要编写JDBC连接,可能需要加载驱动类,但MySQL 8.0之后通常使用com.mysql.cj.jdbc.Driver,而是旧的com.mysql.jdbc.Driver,这点需要注意。同连接URL可能需要添加区参数,如引用[4]中的示例。 总结步骤应该是:下载正确版本的驱动,添加到项目库,配置数据库连接,测试连接,处理可能的区或SSL问题。确保用户按照这些步骤操作,并检查每一步是否正确执行。如果用户遇到问题,可能需要检查日志信息,确认驱动是否正确加载,网络是否通畅,MySQL服务是否运行,以及用户权限是否正确设置。</think>### 逐步配置MySQL 8.0.41数据库连接的步骤 #### 1. 下载MySQL Connector/J驱动 - 访问MySQL官网下载与MySQL 8.0.41兼容的驱动版本(推荐使用`mysql-connector-java-8.0.30`或更高版本)[^1][^4]。 - 下载地址:https://dev.mysql.com/downloads/connector/j/ #### 2. 将驱动添加到项目 1. 在IntelliJ IDEA项目中创建`lib`文件夹(右键项目 → New → Directory)。 2. 将下载的`mysql-connector-java-8.0.30.jar`文件拖入`lib`文件夹。 3. **添加为库**:右键`lib`文件夹 → 选择`Add as Library` → 确认作用范围(通常选`Project`)[^4]。 #### 3. 配置数据库连接 1. 打开**Database工具窗口**: - 顶部菜单栏:`View → Tool Windows → Database` - 或使用快捷键`Alt+1`。 2. 添加MySQL数据源: - 点击`+` → `Data Source → MySQL`。 3. 填写连接参数: - **Host**: `localhost`(若数据库在本地) - **Port**: `3306`(默认端口) - **Database**: 输入目标数据库名称 - **User**: `root`(默认用户名,按实际修改) - **Password**: 输入数据库密码 4. **关键配置**(避免常见错误): - 在`Advanced`标签页添加参数: ```properties serverTimezone=UTC&useSSL=false ``` - **驱动类选择**:确保Driver选择`MySQL`,Driver版本自动识别为`8.0`[^1][^4]。 #### 4. 测试连接 - 点击`Test Connection`按钮,若显示**Successful**则表示配置成。 - 若失败,检查: - 驱动是否成功加载(`lib`文件夹图标应为小书包) - MySQL服务是否启动 - 防火墙是否开放端口 #### 5. 代码示例(JDBC连接) ```java public class DBConnection { public static void main(String[] args) { try { Class.forName("com.mysql.cj.jdbc.Driver"); Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/your_database?serverTimezone=UTC&useSSL=false", "root", "your_password" ); System.out.println("连接成功"); } catch (Exception e) { e.printStackTrace(); } } } ``` ### 常见问题解决 - **区错误**:添加`serverTimezone=UTC`参数。 - **SSL警告**:添加`useSSL=false`参数。 - **驱动类未找到**:检查驱动是否添加到项目库,或手动指定驱动类为`com.mysql.cj.jdbc.Driver`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值