MySQL如何开启和配置SSL连接实现数据传输加密

来源:Android社区作者:弦宿​头衔:草根站长
导读:本期聚焦于小伙伴创作的《MySQL如何开启和配置SSL连接实现数据传输加密》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《MySQL如何开启和配置SSL连接实现数据传输加密》有用,将其分享出去将是对创作者最好的鼓励。

MySQL作为常用的关系型数据库,默认情况下客户端和服务器之间的数据传输是明文的,在网络环境复杂时存在数据泄露风险。开启SSL连接后,所有传输的数据都会被加密,有效保障数据安全性。

MySQL如何开启和配置SSL连接实现数据传输加密

生成SSL证书和密钥

首先需要为MySQL服务器和客户端生成对应的SSL证书、私钥和CA证书,我们可以使用OpenSSL工具完成生成操作。

生成CA证书

CA证书用于签名服务器和客户端证书,确保证书的合法性,执行以下命令生成CA相关文件:

# 生成CA私钥
openssl genrsa 2048 > ca-key.pem
# 生成CA证书,有效期365天
openssl req -new -x509 -nodes -days 365 -key ca-key.pem -out ca-cert.pem

生成服务器证书

服务器证书需要由CA签名,执行以下命令生成服务器相关文件:

# 生成服务器私钥
openssl genrsa 2048 > server-key.pem
# 生成服务器证书请求文件
openssl req -new -key server-key.pem -out server-req.pem
# 用CA签名服务器证书请求,生成服务器证书
openssl x509 -req -in server-req.pem -days 365 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem

生成客户端证书

客户端证书用于客户端连接服务器时的身份验证,生成步骤和服务器证书类似:

# 生成客户端私钥
openssl genrsa 2048 > client-key.pem
# 生成客户端证书请求文件
openssl req -new -key client-key.pem -out client-req.pem
# 用CA签名客户端证书请求,生成客户端证书
openssl x509 -req -in client-req.pem -days 365 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem

配置MySQL服务器开启SSL

将生成的证书和密钥文件放到MySQL的数据目录下,然后修改MySQL配置文件my.cnf(Windows系统为my.ini),添加SSL相关配置。

修改配置文件

[mysqld]配置段中添加以下内容,指定证书和密钥的路径:

[mysqld]
ssl_ca=/var/lib/mysql/ca-cert.pem
ssl_cert=/var/lib/mysql/server-cert.pem
ssl_key=/var/lib/mysql/server-key.pem

修改完成后重启MySQL服务,使配置生效。

验证服务器SSL状态

登录MySQL服务器,执行以下SQL语句查看SSL是否开启:

SHOW VARIABLES LIKE '%ssl%';

如果返回结果中have_ssl的值为YES,说明服务器SSL已经成功开启。

配置客户端使用SSL连接

客户端连接MySQL时,需要指定SSL证书、密钥和CA证书的路径,才能建立加密连接。

命令行客户端连接方式

使用mysql命令连接时,添加SSL相关参数:

mysql -h 127.0.0.1 -u root -p --ssl-ca=ca-cert.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem

强制用户使用SSL连接

可以修改MySQL用户权限,强制指定用户必须使用SSL连接,执行以下SQL语句:

# 创建强制SSL连接的用户
CREATE USER 'ssl_user'@'%' IDENTIFIED BY 'password' REQUIRE SSL;
# 给已有用户开启强制SSL连接
ALTER USER 'existing_user'@'%' REQUIRE SSL;

验证SSL连接是否生效

连接成功后,执行以下SQL语句查看当前连接是否使用了SSL加密:

SHOW STATUS LIKE 'Ssl_cipher';

如果返回结果中Ssl_cipher的值不为空,说明当前连接已经使用了SSL加密,数据传输会被加密处理。

配置注意事项

  • 证书文件需要设置正确的权限,避免其他用户随意读取私钥内容,建议私钥文件权限设置为600。
  • 如果客户端和服务器不在同一台机器,需要将对应的证书文件同步到客户端所在机器,并且路径配置正确。
  • 证书过期后需要重新生成新的证书,并更新服务器和客户端的配置,避免连接失败。
  • 开启SSL后会增加少量的CPU开销,对性能影响较小,一般业务场景可以忽略。

MySQLSSL数据传输加密mysql_ssl_config修改时间:2026-07-15 02:21:32

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。