`

Mysql ssl 设置

 
阅读更多
Mysql 5.7
安装目录:/usr/local/mysql

1. 生成证书文件
/usr/local/mysql/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/conf

2. 安装证书
vi /usr/local/mysql/conf/my.cnf

ssl-ca=/usr/local/mysql/conf/ca.pem
ssl-cert=/usr/local/mysql/conf/server-cert.pem
ssl-key=/usr/local/mysql/conf/server-key.pem

3. 测试是否工作
mysql -uroot -p --ssl-ca=/usr/local/mysql/conf/ca.pem

mysql> \s;
--------------
mysql  Ver 14.14 Distrib 5.7.26, for linux-glibc2.12 (x86_64) using  EditLine wrapper

Connection id: 5375
Current database:
Current user: root@localhost
SSL: Cipher in use is DHE-RSA-AES256-SHA
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.7.26 MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8mb4
Db     characterset: utf8mb4
Client characterset: utf8
Conn.  characterset: utf8
UNIX socket: /usr/local/mysql/mysql.sock
Uptime: 3 days 17 hours 15 min 47 sec

Threads: 7  Questions: 58943  Slow queries: 0  Opens: 527  Flush tables: 1  Open tables: 433  Queries per second avg: 0.183
--------------
红色表示已工作。

mysql> show variables like '%ssl%';
+---------------+---------------------------------------+
| Variable_name | Value                                 |
+---------------+---------------------------------------+
| have_openssl  | YES                                   |
| have_ssl      | YES                                   |
| ssl_ca        | /usr/local/mysql/conf/ca.pem          |
| ssl_capath    |                                       |
| ssl_cert      | /usr/local/mysql/conf/server-cert.pem |
| ssl_cipher    |                                       |
| ssl_crl       |                                       |
| ssl_crlpath   |                                       |
| ssl_key       | /usr/local/mysql/conf/server-key.pem  |
+---------------+---------------------------------------+
9 rows in set (0.02 sec)
红色表示已开启SSL连接

4. JConnect连接方式

-- 生成JKS文件
keytool -import -alias serverCACert -file ca.pem -keystore ca-keystore

keytool -import -alias client-key -file client-cert.pem -keystore client-keystore

JDBC示例:

        Class.forName("com.mysql.jdbc.Driver");
        Properties info = new Properties();
        info.put("user","root");
        info.put("password","1!Admin");
        info.put("clientCertificateKeyStoreType","JKS");
        info.put("clientCertificateKeyStoreUrl","file:///usr/local/mysql/conf/client-keystore");
        info.put("clientCertificateKeyStorePassword","123456");
        info.put("trustCertificateKeyStoreType","JKS");
        info.put("trustCertificateKeyStoreUrl","file:///usr/local/mysql/conf/ca-keystore");
        info.put("trustCertificateKeyStorePassword","123456");

        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/lesson_test?" +
                "useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true" +
                "&useSSL=true&verifyServerCertificate=true", info);
        System.out.println(con);




c3p0配置

    <bean id="paygateDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" lazy-init="true">
		<property name="driverClass" value="com.mysql.jdbc.Driver" />
       	<property name="jdbcUrl" value="jdbc:mysql://127.0.0.1/lesson_test?seUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=true&amp;verifyServerCertificate=true"/>
<property name="properties">
			<props>
				<prop key="user">root</prop>
				<prop key="password">1!Admin</prop>
				<prop key="clientCertificateKeyStoreType">JKS</prop>
				<prop key="clientCertificateKeyStoreUrl">file:///usr/local/mysql/conf/client-keystore</prop>
				<prop key="clientCertificateKeyStorePassword">123456</prop>
				<prop key="trustCertificateKeyStoreType">JKS</prop>
				<prop key="trustCertificateKeyStoreUrl">file:///usr/local/mysql/conf/ca-keystore</prop>
				<prop key="trustCertificateKeyStorePassword">123456</prop>
			</props>
		</property>
</bean>


Druid配置
DruidDataSource ds = new DruidDataSource();
        ds.setUrl("jdbc:mysql://localhost:3306/lesson_test?useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true&useSSL=true&verifyServerCertificate=true");
        ds.setUsername("root");
        ds.setPassword("1!Admin");
        ds.setDriverClassName("com.mysql.jdbc.Driver");
        ds.setLoginTimeout(3);
        ds.setPhyTimeoutMillis(3000);
        ds.setQueryTimeout(25);
        ds.setConnectionErrorRetryAttempts(3);
        ds.setMaxWait(3000);
        ds.getConnectProperties().put("clientCertificateKeyStoreType","JKS");
        ds.getConnectProperties().put("clientCertificateKeyStoreUrl","file:///usr/local/mysql/conf/client-keystore");
        ds.getConnectProperties().put("clientCertificateKeyStorePassword","123456");
        ds.getConnectProperties().put("trustCertificateKeyStoreType","JKS");
        ds.getConnectProperties().put("trustCertificateKeyStoreUrl","file:///usr/local/mysql/conf/ca-keystore");
        ds.getConnectProperties().put("trustCertificateKeyStorePassword","123456");
        DruidPooledConnection con = ds.getConnection();
        System.out.println(con);


分享到:
评论

相关推荐

    MySQL 使用 SSL 连接配置详解

    MySQL 使用SSL连接配置详解 在现代数据库管理中,安全性是至关重要的,SSL(Secure Sockets Layer)连接为MySQL提供了一种加密数据传输的方式,确保了客户端和服务器之间的通信不被窃听或篡改。本文将详细介绍如何...

    MySQL 8.0开启SSL.docx

    我们可以在 MySQL 配置文件中添加以下设置: `[mysqld]` `ssl-ca=/path/to/ca.crt` `ssl-cert=/path/to/server.crt` `ssl-key=/path/to/server.key` 这里,我们需要将证书和密钥文件的路径正确地配置到 MySQL 配置...

    mysql+ssl配置文档

    5. **设置MySQL服务**: ```bash cp share/mysql/mysql.server /etc/init.d/mysqld chmod 755 /etc/init.d/mysqld chkconfig --add mysqld chkconfig --level 35 mysqld on ``` 6. **创建软链接**: ```bash ...

    深入指南:配置MySQL的SSLTLS选项以增强数据安全

    MySQL作为广泛使用的数据库管理系统,提供了SSL/TLS支持来增强数据传输过程中的安全性。通过配置SSL/TLS选项,可以确保客户端与服务器之间的通信加密,从而保护敏感数据免受中间人攻击。本文将详细介绍如何在MySQL中...

    JDBC连接Mysql数据库案例

    可以设置自动提交模式,或者手动控制事务的开始、提交和回滚。 通过以上步骤,我们可以编写出完整的JDBC连接MySQL数据库的代码。在这个案例中,`DBConnection`可能是封装了这些操作的类,提供了方便的方法来连接...

    MySQL配置SSL主从复制

    MySQL配置SSL主从复制是为了确保数据在主从节点之间的传输是安全的,通过加密通信防止数据在传输过程中被窃取或篡改。SSL(Secure Sockets Layer)是一种广泛使用的网络安全协议,可以为网络通信提供加密处理,确保...

    Jira+mysql5.7解决包.rar

    Jira+Mysql5.7会报引擎问题,因为JIRA匹配到5.6版本,解决方案是更新链接客户端, 使用方法:解压后把文件放入/opt/atlassian/jira/atlassian-jira/WEB-INF/lib/目录

    mysql设置指定ip远程访问连接实例

    本教程将详细解释如何设置MySQL以允许指定IP地址的远程访问连接。 首先,我们要理解MySQL的权限系统。在MySQL中,权限是基于用户、主机和数据库的三元组进行分配的。例如,`'user'@'host'`定义了一个特定的用户权限...

    Centos7服务器配置Nginx+mysql+https证书

    - 重启Nginx服务以应用新的SSL设置。 6. MySQL数据库操作: - 文件中提供了一些基本的MySQL命令用于管理数据库和表,例如创建数据库、列出数据库、使用数据库、显示表、查看数据、过滤数据、排序数据、统计数据等...

    MySQL安全配置详解

    * 使用 SSL 加密连接 * 定期备份数据库 * 监控数据库日志 三、MySQL 版本管理 MySQL 的版本管理是非常重要的,了解 MySQL 的版本可以帮助用户更好地选择合适的版本。 MySQL 官方文档中描述了不同的版本: * MySQL...

    基于SSL加密的MySQL主从复制

    在MySQL的主从复制中,其传输过程是明文传输,并不能保证数据的安全性,在编译安装Mysql时,基本上都会加上一个 --with-openssl这样的选项,即表示支openssl加密传输协议,因此就可以为mysql配置基于ssl加密传输

    MySQL基于SSL协议进行主从复制的详细操作教程

    同样,配置从服务器的SSL设置,并将主服务器的证书添加到其`ssl-ca`选项中。 最后,设置主从复制的其他常规配置,如`server-id`,`log-bin`等,然后启动复制。 为了测试复制是否成功,可以使用`SHOW SLAVE STATUS ...

    mysql通过ssl的方式生成秘钥具体生成步骤

    MySQL数据库支持通过SSL(Secure Sockets Layer)进行安全的数据传输,以增强服务器与客户端之间的通信安全性。SSL证书的生成和配置对于确保数据在传输过程中的加密至关重要。以下是一份详细的MySQL SSL秘钥生成步骤...

    mysql5.7.17资源安装包

    使用SSL加密MySQL的连接,可以大大提高数据库的安全性。 新的密码安全策略,禁止使用一些常见的、易猜测的密码。 增加了更多的审计和监控功能,方便企业更好地监督数据库的安全情况。 MySQL 5.7.17不仅拥有更好的...

    MySQL数据库设置远程访问权限方法总结.pdf

    MySQL数据库设置远程访问权限方法总结 MySQL数据库设置远程访问权限是关系型数据库管理系统中的一个重要问题。本文将详细介绍如何设置MySQL数据库的远程访问权限,并提供了一些相关的安全策略和Best Practice。 ...

    mysql57驱动jar包,mysql8.0.31版本 Connector/J 8.0.31

    - **SSL连接**:如果MySQL服务器要求使用SSL连接,需要在URL中指定`useSSL=true`和`requireSSL=true`参数。 - **字符集设置**:确保数据库、连接URL和Java程序中的字符集设置一致,以避免乱码问题。 - **连接池**:...

    Mysql JDBC Url参数说明

    MySQL JDBC URL(Java Database Connectivity Uniform Resource Locator)是Java应用程序连接MySQL数据库时使用的字符串,它包含了数据库连接所需的各项配置信息。这篇博文将详细解释MySQL JDBC URL的各个参数及其...

    Navicat 最新版解决ssl连接失败问题

    NavicatPremium 最新版下载安装文件,解决ssl连接失败问题

Global site tag (gtag.js) - Google Analytics