关系数据库MySQL版

通过JDBC连接MySQL实例

2025-05-30 09:05:32

通过JDBC连接实例的方式有无需下载SSL证书连接和用户下载SSL证书连接两种,其中使用SSL证书连接通过了加密功能,具有更高的安全性。MySQL新实例默认关闭SSL数据加密,开启SSL请参考设置SSL数据加密。SSL连接实现了数据加密功能,但同时也会增加网络连接响应时间和CPU消耗,不建议开启SSL数据加密。

前提条件

用户需要具备以下技能:

          熟悉计算机基础知识。

          了解JAVA编程语言。

          了解JDBC基础知识。

使用SSL证书连接

²  说明

使用SSL证书连接实例,即通过证书校验并连接数据库。

1.        下载CA证书。
1.1. 在“实例管理”页面,单击实例名称进入“基本信息”页面。
1.2. 在“网络”区域,单击“SSL状态”开关右侧的下载证书。

2.        使用keytool工具通过CA证书生成truststore文件。

            说明

            Keytool是Java开发工具包中的一个命令行工具,可用于管理密钥和证书。

          如果您的系统中安装了Java并配置了正确的环境变量,则可以直接使用keytool命令。

          如果您的系统中没有安装Java,请先安装Java,然后配置环境变量再使用keytool命令。

            keytool.exe -importcert -alias  <MySQLCACert> -file <ca.pem> -keystore <truststore_file> -storepass <password>复制

              变量

              说明

              <MySQLCACert >

              请设置truststore文件的名称。建议设置为具有业务意义的名称,便于后续识别。

              <ca.pem>

              请替换为下载的CA证书的名称,ca.pem。

              <truststore_file>

              请设置truststore文件的存放路径。

              <password>

              请设置truststore文件的密码。

            代码示例(使用JDK安装路径下的keytool工具生成truststore文件):

            Owner: OID.0.9.2342.19200300.100.1.3=Sample@chinatelecom.cn, CN=ca.ctyun.com, OU=DataBaseGroup, O=CloudCenter, L=GuangZhou, ST=GuangDong, C=CN
 Issuer: OID.0.9.2342.19200300.100.1.3=Sample@chinatelecom.cn, CN=ca.ctyun.com, OU=DataBaseGroup, O=CloudCenter, L=GuangZhou, ST=GuangDong, C=CN
 Serial number: b0db70460527a4df
 Valid from: Tue Mar 21 15:40:12 CST 2023 until: Fri Mar 18 15:40:12 CST 2033
 Certificate fingerprints:
      MD5:  A6:9G:E5:5C:10:E4:F4:18:84:66:76:23:54:92:4C:8A
      SHA1: 23:66:FE:D4:83:24:58:69:B5:F6:28:04:8D:AA:FB:0E:B0:B9:F9:CB
      SHA256: 3F:C9:C7:EA:3F:8E:9F:6E:71:7E:5C:7A:81:44:0B:EA:51:CB:EA:7F:9C:00:3A:CF:6E:B8:64:9D:16:62:73:91
 Signature algorithm name: SHA256withRSA
 Subject Public Key Algorithm: 2048-bit RSA key
 Version: 3
 
 Extensions: 
      Trust this certificate? [no]: y
      Certificate was added to keystore复制

3.        通过JDBC连接MySQL数据库,代码中的JDBC链接格式如下:

            jdbc:mysql://<instance_ip>:<instance_port>/<db_name>? 
 requireSSL=<valuea>&useSSL=<valueb>&verifyServerCertificate=<valuec>&trustCertificateKeyStoreUrl=file: 
 <truststore_file>&trustCertificateKeyStorePassword=<password>复制

              参数

              说明

              <instance_ip>

              请替换为实例的IP地址。说明:如果通过弹性云服务器连接,“instance_ip”是实例的“内网地址”。您可以在该实例“基本信息”页面的“实例信息”区域查看连接地址。如果通过公网连接,“instance_ip”为该实例已绑定的“弹性公网IP”。

              <instance_port>

              请替换为实例的数据库端口,默认为13049。 说明:您可以在该实例“连接管理”页面的“连接信息”区域查看。

              <db_name>

              替换为连接实例使用的数据库名,默认为mysql。

              <valuea >

              requireSSL的值,用于设置服务端是否支持SSL连接。取值如下:true:支持。false:不支持。

              <valueb >

              useSSL的值,用于设置客户端是否使用SSL连接服务端。取值如下:true:使用。false:不使用。

              <valuec >

              verifyServerCertificate的值,客户端是否校验服务端的证书。取值如下:true:校验。false:不校验。

              <truststore_file>

              替换为truststore文件设置的存储路径。

              <password>

              替换为truststore文件设置的密码。

            requireSSL参数应用说明

              useSSL

              requireSSL

              verifyServerCertificate

              sslMode

              false

              不涉及

              不涉及

              DISABLED

              true

              false

              false

              PREFERRED

              true

              true

              false

              REQUIRED

              true

              不涉及

              true

              VERIFY_CA


无证书连接

²  说明

该方式不对服务端进行证书校验,用户无需下载SSL证书。

1.        通过JDBC连接MySQL数据库实例,代码中的JDBC链接格式如下:

            jdbc:mysql://<instance_ip>:<instance_port>/<database_name>?useSSL=false复制

              变量

              说明

              <instance_ip>

              请替换为实例的IP地址。说明:如果通过弹性云服务器连接,“instance_ip”是实例的“内网地址”。您可以在该实例“基本信息”或“连接管理”页面的“连接信息”区域查看。如果通过公网连接,“instance_ip”为该实例已绑定的“弹性公网IP”。您可以在该实例“连接管理”页面的“连接信息”区域查看。

              <instance_port>

              请替换为实例的数据库端口,默认为13049。说明:您可以在该实例“连接管理”页面的“连接信息”区域查看。

              <database_name>

              请替换为连接实例使用的数据库名,默认为mysql。

            

7AetA1eBXAOV