赞
踩
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();
- }
- }
-
- }
- }
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。