当前位置: 首页
数据库
MySQL安装后配置加密连接传输的详细步骤

MySQL安装后配置加密连接传输的详细步骤

热心网友 时间:2026-07-13
转载

MySQL安装后默认明文传输,需手动配置服务端强制策略、用户权限和客户端行为联动。核心步骤包括确认have_ssl为YES、证书路径格式权限合规、设置require_secure_transport=ON,并验证Ssl_cipher确认连接加密,客户端需显式启用SSL。

MySQL安装后默认不会启用加密传输,这一安全漏洞往往被忽视。即便您费心配置了SSL证书,连接仍可能以明文方式传输——关键在于必须手动将服务端强制策略、用户权限设置与客户端连接行为三者联动配置,任何一环缺失都无法实现真正的加密连接。

MySQL安装后如何配置加密连接传输?

许多开发者以为生成证书后就能高枕无忧,但默认情况下MySQL依然采用明文传输——必须手动完成服务端强制策略、用户权限和客户端行为的三方联动配置,缺一不可。

确认ha ve_ssl状态是否为YES,而非DISABLED

不少问题都卡在第一步:配置修改了、证书也放置了、服务也重启了,但执行SHOW VARIABLES LIKE 'ha ve_ssl'返回的结果却是DISABLED或者干脆为空值。这并非配置未生效,而是mysqld启动时根本没有加载OpenSSL模块。

  • 首先执行SHOW VARIABLES LIKE 'ssl_ca'ssl_certssl_key,这三个系统变量必须都返回非空的绝对路径,且对应的证书文件真实存在于磁盘上。
  • ha ve_ssl = DISABLED在MariaDB精简版、Alpine镜像,或者编译时未添加-DWITH_SSL=system参数的情况下经常出现——直接重装官方二进制包比折腾编译要靠谱得多。
  • 顺手检查一下SHOW VARIABLES LIKE 'tls_version',确认数据库支持TLSv1.2TLSv1.3协议。旧客户端无法连接时可临时放宽版本要求,但切勿长期开启TLSv1.0

证书路径、格式与权限三者必须同时满足合规要求

MySQL对证书的校验相当严格:只接受绝对路径、仅支持PEM格式、私钥权限必须为600。使用相对路径、~/符号,或者私钥权限大于600,都会导致启动失败或连接被拒绝。

  • 优先使用内置工具生成(MySQL 5.7.6及以上版本):mysql_ssl_rsa_setup --datadir=/var/lib/mysql --uid=mysql,该工具能自动处理好subjectAltName扩展,避免出现X509_V_ERR_IP_ADDRESS_MISMATCH这类烦人的证书校验错误。
  • 证书文件必须放置在MySQL进程拥有读取权限的目录,例如/var/lib/mysql/ca.pem,切勿放在/root//home/deploy/等受限目录下。
  • 立即修正文件权限:chown mysql:mysql /var/lib/mysql/*.pem && chmod 600 /var/lib/mysql/server-key.pem。MySQL会拒绝读取组账户或其他用户可读的私钥文件。
  • 私钥不能带有密码保护——如果存在密码,使用openssl rsa -in server-key.pem -out server-key.pem命令去除密码。

require_secure_transport = ON 是生产环境的底线配置

require_secure_transport = ON并非可选的性能优化项,而是强制所有TCP连接都必须走SSL加密的硬性开关。仅设置ssl=ON或者只依赖用户权限控制,都可能被绕过而退回明文传输。

  • 编辑/etc/my.cnf/etc/mysql/mysql.conf.d/mysqld.cnf配置文件,仅在[mysqld]段中添加以下配置:
    ssl_ca = /var/lib/mysql/ca.pem
    ssl_cert = /var/lib/mysql/server-cert.pem
    ssl_key = /var/lib/mysql/server-key.pem
    require_secure_transport = ON
  • 路径必须使用绝对路径,不能使用~/或相对路径;也不要写在[client]段中——那是客户端配置,对服务端不生效。
  • 修改完成后必须执行systemctl restart mysqld(而不是reload),SSL配置不支持热加载。
  • 重启后立即检查MySQL错误日志:tail -n 50 /var/log/mysqld.log | grep -i ssl。如果出现Failed to set up SSL错误,说明证书文件或权限存在问题。

验证当前连接是否真正走SSL,不要只看status,要查Ssl_cipher

SHOW VARIABLES LIKE '%ssl%'只能告诉你“配置了哪些参数”,而STATUSs才能反映当前连接的实际加密状态。最直接的方法是查询Ssl_cipher变量。

  • 连接MySQL后执行:SELECT Ssl_cipher FROM information_schema.PROCESSLIST WHERE ID=CONNECTION_ID();
  • 返回结果为空字符串或NULL → 当前连接未使用SSL加密。
  • 返回类似ECDHE-ECDSA-AES256-SHATLS_AES_256_GCM_SHA384 → 连接已加密。
  • 客户端连接时必须显式启用SSL:mysql -u app -p --ssl-mode=REQUIRED;而mysql -u root -p默认不启用SSL。
  • JDBC连接需添加&useSSL=true&requireSSL=true参数;PyMySQL需传入ssl={'ca': '/path/to/ca.pem'},仅设置ssl=True会跳过证书校验,失去防中间人攻击的保护意义。

最容易被忽略的一点是:开启require_secure_transport=ON之后,所有未显式启用SSL的客户端连接会被直接拒绝,但错误提示仍然显示为Access denied,而不是SSL相关的报错信息——这意味着你需要从客户端日志或MySQL错误日志中查找SSL connection error才能定位真实原因。

来源:https://www.php.cn/faq/2783127.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
Redis 6.0 ACL权限控制:最小化命令授权提升安全性

Redis 6.0 ACL权限控制:最小化命令授权提升安全性

Redis6 0及以上版本启用ACL时,需确认版本并修改default用户默认全开权限。按业务边界创建用户,严格绑定keypattern(如~order:*),避免漏写通配符。命令权限按输入顺序生效,推荐细粒度列举而非类别。客户端连接必须显式传递用户名,否则回退至default用户导致权限失效。

时间:2026-07-13 07:07
导出数据库时包含创建数据库语句的选项设置

导出数据库时包含创建数据库语句的选项设置

使用mysqldump导出时,默认不包含建库语句,需添加--databases参数才能生成CREATEDATABASE和USE语句。同时,导出账号必须拥有SHOWDATABASES权限,否则会报错。注意--no-create-db参数会覆盖建库语句,导致不生成建库指令,导入前需检查目标库是否存在,并确保字符集兼容。

时间:2026-07-13 07:07
SQL嵌套查询使用Union与Intersect集合运算符过滤

SQL嵌套查询使用Union与Intersect集合运算符过滤

嵌套查询中不可直接在WHERE或IN中使用UNION或INTERSECT。正确做法是将集合运算符包裹在括号内作为派生表置于FROM子句中,并显式赋予别名。对于不支持INTERSECT的数据库,可用EXISTS嵌套替代。需注意列类型对齐、别名不可省略等细节。

时间:2026-07-13 07:07
如何在SQL中使用BIT_COUNT函数统计二进制位数量教程

如何在SQL中使用BIT_COUNT函数统计二进制位数量教程

BIT_COUNT函数统计无符号整数二进制中1的个数,输入必须为非负整数,字符串或负数会导致错误。使用前应确保字段为UNSIGNED类型或通过CAST转换。该函数不走索引,频繁查询建议缓存结果。MySQL特有,其他数据库需另写逻辑。对NULL返回NULL,需用IFNULL处理。

时间:2026-07-13 07:07
SQL中利用JOIN查找A表不存在B表的数据

SQL中利用JOIN查找A表不存在B表的数据

在SQL中查找A表存在而B表不存在的记录,最可靠的写法是使用LEFTJOIN并结合WHEREB idISNULL。需注意ON只用于连接逻辑,过滤条件应放在WHERE子句中;B表关联字段需要建立索引,并且要避免NULL值的陷阱。不建议使用NOTIN或EXCEPT,因为它们容易出错且性能较差。

时间:2026-07-13 07:06
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 热门数据榜