mysql 加密连接SSL

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介:

1.SSL含义


SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。


2.mysql5.7SSL配置和使用


注意:这种方法只使用5.7,mysql5.6也支持ssl加密连接,但是配置过程比较复杂,需要用到openssl命令来创建各类共秘钥。


我的测试环境默认没有启用SSL,状态为disabled

mysql> show  variables like '%ssl%';

+---------------+----------+

| Variable_name | Value    |

+---------------+----------+

| have_openssl  | DISABLED |

| have_ssl      | DISABLED |

| ssl_ca        |          |

| ssl_capath    |          |

| ssl_cert      |          |

| ssl_cipher    |          |

| ssl_crl       |          |

| ssl_crlpath   |          |

| ssl_key       |          |

+---------------+----------+

可以通过执行命令mysql_ssl_rsa_setup创建pem文件:

[root@Darren1 ~]# cd /usr/local/mysql/bin/


[root@Darren1 bin]# ./mysql_ssl_rsa_setup

Generating a 2048 bit RSA private key

.................................................................................................+++

................................+++

writing new private key to 'ca-key.pem'

-----

Generating a 2048 bit RSA private key

......................................+++

.+++

writing new private key to 'server-key.pem'

-----

Generating a 2048 bit RSA private key

........................................................................................................................................+++

......+++

writing new private key to 'client-key.pem'

-----


运行完命令mysql_ssl_rsa_setup后会发现数据目录下多出了一些以pem结尾的文件,而这些文件就是开启SSL连接所需要的文件:

[root@Darren1 data]# ll *.pem

-rw------- 1 root root 1679 Nov 26 05:56 ca-key.pem

-rw-r--r-- 1 root root 1074 Nov 26 05:56 ca.pem

-rw-r--r-- 1 root root 1078 Nov 26 05:56 client-cert.pem

-rw------- 1 root root 1679 Nov 26 05:56 client-key.pem

-rw------- 1 root root 1679 Nov 26 05:56 private_key.pem

-rw-r--r-- 1 root root  451 Nov 26 05:56 public_key.pem

-rw-r--r-- 1 root root 1078 Nov 26 05:56 server-cert.pem

-rw------- 1 root root 1675 Nov 26 05:56 server-key.pem


新创建的文件属于root用户,需要改变所有者和所属组,然后重启服务:

[root@Darren1 data]# chown -R mysql:mysql data/


[root@Darren1 ~]# /etc/init.d/mysqld restart


mysql> show variables like '%ssl%';

+---------------+-----------------+

| Variable_name | Value           |

+---------------+-----------------+

| have_openssl  | YES             |

| have_ssl      | YES             |

| ssl_ca        | ca.pem          |

| ssl_capath    |                 |

| ssl_cert      | server-cert.pem |

| ssl_cipher    |                 |

| ssl_crl       |                 |

| ssl_crlpath   |                 |

| ssl_key       | server-key.pem  |

+---------------+-----------------+


指定IP,通过网络登陆测试:

[root@Darren1 ~]# mysql -uroot -p147258 -h192.168.91.5 


mysql>\s

--------------

mysql  Ver 14.14 Distrib 5.7.14, for linux-glibc2.5 (x86_64) using  EditLine wrapper

Connection id:          10

Current database:

Current user:           root@Darren1

SSL:                    Cipher in use is DHE-RSA-AES256-SHA

......


本地客户端登陆,没指定IP,默认是不需要SSL加密:

[root@Darren1 ~]# mysql -uroot -p147258 -hlocalhost


mysql>\s

--------------

mysql  Ver 14.14 Distrib 5.7.14, for linux-glibc2.5 (x86_64) using  EditLine wrapper

Connection id:          12

Current database:

Current user:           root@localhost

SSL:                    Not in use

......


mysql5.7用户连接默认是使用ssl加密的,也可以用--ssl=0(mysql5.7也可以用--ssl-mode=dibaled)强制用户不使用ssl加密:

[root@Darren1 ~]# mysql -ucdhu4 -p147258 -h192.168.91.5 --ssl=0   

或者:

[root@Darren1 ~]# mysql -ucdhu4 -p147258 -h192.168.91.5 --ssl-mode=disabled 


mysql>\s

--------------

mysql  Ver 14.14 Distrib 5.7.14, for linux-glibc2.5 (x86_64) using  EditLine wrapper

Connection id:          18

Current database:

Current user:           cdhu4@Darren1

SSL:                    Not in use

......


若在创建用户时,希望该用户每次必须通过SSL方式,则需在通过REQUIRE SSL来进行设置:

mysql>alter user cdhu5@'%' require ssl;


此时指定ssl=0(或者ssl_mode=disabled)则会报错1045:

[root@Darren1 ~]# mysql -ucdhu5 -p147258 -h192.168.91.5 --ssl=0

ERROR 1045 (28000): Access denied for user 'cdhu5'@'Darren1' (using password: YES)


3.ssl加密连接对性能的影响

开启ssl加密连接是性能必然会下降,性能开销在25%左右, 另外,由于SSL开销较大的环节在建立连接,所以短链接的开销可能会更大,因此推荐使用长连接或者连接池的方式来减小SSL所带来的额外开销,不过好在MySQL的应用习惯大部分也是长连接的方式。



本文转自 Darren_Chen 51CTO博客,原文链接:http://blog.51cto.com/darrenmemos/1878716,如需转载请自行联系原作者

目录
打赏
0
0
0
0
265
分享
相关文章
实时数仓 Hologres操作报错合集之在尝试访问DataHub时,报错连接超时,该怎么处理
在使用阿里云实时数仓Hologres时,可能会遇到不同类型的错误。例如:1.内存超限错误、2.字符串缓冲区扩大错误、3.分区导入错误、4.外部表访问错误、5.服务未开通或权限问题、6.数据类型范围错误,下面是一些常见错误案例及可能的原因与解决策略的概览。
实时数仓 Hologres操作报错合集之遇到报错:连接到 FE 失败,剩余的连接槽保留用于非复制超级用户连接,该怎么处理
在使用阿里云实时数仓Hologres时,可能会遇到不同类型的错误。例如:1.内存超限错误、2.字符串缓冲区扩大错误、3.分区导入错误、4.外部表访问错误、5.服务未开通或权限问题、6.数据类型范围错误,下面是一些常见错误案例及可能的原因与解决策略的概览。
实时数仓 Hologres产品使用合集之Hologres quickbi读holo是用的直读还是连接
实时数仓Hologres的基本概念和特点:1.一站式实时数仓引擎:Hologres集成了数据仓库、在线分析处理(OLAP)和在线服务(Serving)能力于一体,适合实时数据分析和决策支持场景。2.兼容PostgreSQL协议:Hologres支持标准SQL(兼容PostgreSQL协议和语法),使得迁移和集成变得简单。3.海量数据处理能力:能够处理PB级数据的多维分析和即席查询,支持高并发低延迟查询。4.实时性:支持数据的实时写入、实时更新和实时分析,满足对数据新鲜度要求高的业务场景。5.与大数据生态集成:与MaxCompute、Flink、DataWorks等阿里云产品深度融合,提供离在线
【Azure Redis 缓存】Linux VM使用6380端口(SSL方式)连接Azure Redis (redis-cli & stunnel)
【Azure Redis 缓存】Linux VM使用6380端口(SSL方式)连接Azure Redis (redis-cli & stunnel)
138 0
实时数仓 Hologres产品使用合集之如何使用Flink的sink连接
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
【技术干货】破解Nacos安全隐患:连接用户名与密码明文传输!掌握HTTPS、JWT与OAuth2.0加密秘籍,打造坚不可摧的微服务注册与配置中心!从原理到实践,全方位解析如何构建安全防护体系,让您从此告别数据泄露风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其连接用户名和密码的明文传输成为安全隐患。本文探讨加密策略提升安全性。首先介绍明文传输风险,随后对比三种加密方案:HTTPS简化数据保护;JWT令牌减少凭证传输,适配分布式环境;OAuth2.0增强安全,支持多授权模式。每种方案各有千秋,开发者需根据具体需求选择最佳实践,确保服务安全稳定运行。
723 0
如何使用 STARTTLS 加密 OpenLDAP 连接
如何使用 STARTTLS 加密 OpenLDAP 连接
165 0
|
8月前
|
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
652 0
MySql数据库级别MD5加密java MD5加密解密工具包
MySql数据库级别MD5加密java MD5加密解密工具包
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等