JDBC连接MySQL8 SSL
创始人
2025-02-11 01:33:40
0

CREATE USER 'dev001'@'%' IDENTIFIED BY 'FxhyDbDev@CqsZxHjz147'  require X509;
GRANT ALL PRIVILEGES ON fxhy_test.* TO 'dev001'@'%';
FLUSH PRIVILEGES;

1.创建用户并指定ssl连接

grant all on . to 'test'@'%' identified by 'imooc require SSL(X509);


2.查看是否使用ssl

SELECT ssl_type From mysql.user Where user="test"

3.配置用户必须使用ssl

ALTER USER 'test'@'%' REQUIRE SSL(X509);
FLUSH PRIVILEGES;
注意:%号位置可以更换为连接数据库的ip


4.取消用户使用ssl连接

update user set ssl_type='' where user='test';
FLUSH PRIVILEGES;

5.证证书是否导入

keytool -list -keystore truststore.jks

6.数据库 datadir 目录下

文件名    说明
ca-key.pem    CA私钥
ca.pem    自签的CA证书,客户端连接也需要提供
client-cert.pem    客户端连接服务器端需要提供的证书文件
client-key.pem    客户端连接服务器端需要提供的私钥文件
private_key.pem    私钥/公钥对的私有成员
public_key.pem    私钥/公钥对的共有成员
server-cert.pem    服务器端证书文件
server-key.pem    服务器端私钥文件

7、查看是否开启SSL

8、确认当前连接启用SSL

9、当前用户

10、bin/mysql SSL方式连接

mysql --ssl-ca=E:\\installprograms\\zhuomian\\SSL\\ca.pem --ssl_cert=E:\\installprograms\\zhuomian\\SSL\\client-cert.pem --ssl-key=E:\\installprograms\\zhuomian\\SSL\\client-key.pem -utest -P13306 -h192.168.0.103 -p

11、强制使用SSL连接

[mysqld]

#require_secure_transport = ON

12、查询用户状态

select user,host,ssl_type,ssl_cipher,x509_issuer,x509_subject from mysql.user;

13、 show status like 'ssl_cipher';

设置服务器身份验证:导入服务器证书
keytool -importcert -alias MySQLCACert -file ca.pem -keystore truststore.jks -storepass 123456

设置客户端身份验证:
将客户端密钥和证书文件转换为 PKCS #12 存档:(在数据库服务器生成)
openssl pkcs12 -export -in client-cert.pem -inkey client-key.pem -name "mysqlclient" -passout pass:123456 -out client-keystore.p12

将客户端密钥和证书导入 Java 密钥库:
keytool -importkeystore -srckeystore client-keystore.p12 -srcstoretype pkcs12 -srcstorepass 123456 -destkeystore keystore.jks -deststoretype JKS -deststorepass 123456

demo:

package org.example;  /**  * @ClassName StandardJDBCSample  * @Description TODO  * @Author tangzongyun  * @Date 2024/5/1 17:06  * @Version 1.0  **/ //mysql使用ssl方式jdbc连接数据库 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement;  /**  * 标准JDBC操作五步骤  */ public class StandardJDBCSample {     public static void main(String[] args) {         Connection conn = null;         try {             //1. 加载并注册JDBC驱动             Class.forName("com.mysql.cj.jdbc.Driver");             //2. 创建数据库连接             String url = "";             url = "jdbc:mysql://192.168.0.103:13306/mysql?"             + "useSSL=true"                     + "&verifyServerCertificate=true"                     + "&requireSSL=true"                     + "&trustCertificateKeyStoreUrl=file:E:\\installprograms\\zhuomian\\SSL\\truststore.jks"                     + "&trustCertificateKeyStorePassword=123456"                     + "&clientCertificateKeyStoreUrl=file:E:\\installprograms\\zhuomian\\SSL\\keystore.jks"                     + "&clientCertificateKeyStorePassword=123456";             conn = DriverManager.getConnection(url                   ,                     "test", "1qaz@WSX"             );             //3. 创建Statement对象             Statement stmt = conn.createStatement();             ResultSet rs = stmt.executeQuery("select * from user");             //4. 遍历查询结果             while (rs.next()) {                 //Integer eno = rs.getInt(1); //eno                 String ename = rs.getString("host");                 String user = rs.getString("user");                 String ssl_type = rs.getString("ssl_type");                 System.out.println(ename + "-" + user + "-" + ename + "-" + ssl_type);             }         }catch(Exception e){             e.printStackTrace();         }finally {             try {                 if (conn != null && conn.isClosed() == false) {                     //5. 关闭连接,释放资源                     conn.close();                 }             }catch(Exception ex){                 ex.printStackTrace();             }         }      } }  

参考文件:https://www.cnblogs.com/plluoye/p/11182945.html

相关内容

热门资讯

第2分钟秘籍!逍遥辅助器手机版... 第2分钟秘籍!逍遥辅助器手机版,新九哥辅助开挂(辅助)一直存在有工具(哔哩哔哩)1、逍遥辅助器手机版...
三分钟方针!指尖四川小程序破解... 三分钟方针!指尖四川小程序破解器,新二号透视辅助(辅助)果然真的是有修改器(哔哩哔哩)1、任何指尖四...
十分钟绝活儿!欢乐游戏城攻略,... 十分钟绝活儿!欢乐游戏城攻略,新九天辅助器(辅助)一直有挂辅助器(哔哩哔哩)欢乐游戏城攻略是不是有人...
一分钟步骤!新上游通用挂是真的... 一分钟步骤!新上游通用挂是真的吗,新漫游正版辅助软件(辅助)本来真的有辅助器(哔哩哔哩)亲,关键说明...
第二分钟资料!越乡游辅助脚本,... 第二分钟资料!越乡游辅助脚本,新西游游戏辅助(辅助)总是有挂辅助器(哔哩哔哩)亲,关键说明,越乡游辅...
第七分钟窍门!天天贵阳大瓮安插... 第七分钟窍门!天天贵阳大瓮安插件,火神微信辅助(辅助)原来是真的辅助器(哔哩哔哩)1、玩家可以在天天...
四分钟经验!大唐麻将辅助软件,... 四分钟经验!大唐麻将辅助软件,小程序财神十三张脚本(辅助)真是存在有修改器(哔哩哔哩)1、进入游戏-...
第1分钟诀窍!微信小程序游戏破... 第1分钟诀窍!微信小程序游戏破解器,卡农血拼辅助(辅助)真是是有插件(哔哩哔哩)1、每一步都需要思考...
第一分钟积累!赣州冲关辅助,微... 第一分钟积累!赣州冲关辅助,微信开心十三张小程序脚本(辅助)好像存在有工具(哔哩哔哩)1、完成微信开...
七分钟阶段!盛世辅助器,新道游... 七分钟阶段!盛世辅助器,新道游透视脚本免费下载(辅助)竟然真的有神器(哔哩哔哩)1、打开软件启动之后...