You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为AWS RDS MySQL加密并配置SSL访问,在Python中通过证书连接?

AWS RDS MySQL 加密、SSL强制访问配置及Python连接步骤

一、关于RDS实例已加密的说明

你看到的实例“已加密”是静态加密,也就是数据存储在磁盘上时的加密,依赖AWS KMS密钥(默认是AWS管理的密钥,也可以用自定义KMS密钥)。这种加密是创建实例时指定的,一旦创建完成就无法再开启,所以你的实例已经具备了存储层的加密保护。

二、配置强制SSL证书访问

要让数据库强制所有连接都使用SSL,按以下步骤操作:

  • 登录AWS RDS控制台,找到目标MySQL实例,点击「修改」按钮
  • 在页面的「数据库选项」区域,找到「SSL连接」选项,选择「强制SSL连接」
  • 滚动到页面底部,选择应用时间(如果业务允许,选「立即应用」;否则选「下次维护窗口」),然后确认修改
  • 修改完成后,可以连接数据库执行SQL验证:SHOW VARIABLES LIKE 'require_secure_transport';,返回值为ON即表示强制SSL已生效

三、获取RDS SSL根证书

通过SSL连接RDS MySQL需要使用AWS官方的根证书,你可以在AWS RDS相关文档中找到对应证书的下载入口,下载后保存到本地项目目录(常用的证书文件名为rds-ca-2019-root.pem)。

四、用PyMySQL通过SSL连接数据库

以下是完整的Python连接代码,替换成你的实际参数即可:

import pymysql

# 替换为你的实际数据库信息
db_params = {
    "host": "你的RDS实例端点",
    "user": "数据库用户名",
    "password": "数据库密码",
    "database": "要连接的数据库名",
    "ssl": {
        "ca": "./rds-ca-2019-root.pem"  # 这里填你的证书文件路径
    }
}

try:
    # 建立SSL连接
    conn = pymysql.connect(**db_params)
    print("SSL连接成功!")
    
    # 验证连接状态(可选)
    with conn.cursor() as cursor:
        cursor.execute("SHOW STATUS LIKE 'Ssl_cipher';")
        cipher = cursor.fetchone()
        print(f"当前SSL加密套件: {cipher[1]}")
        
        # 执行示例查询
        cursor.execute("SELECT NOW();")
        print(f"当前数据库时间: {cursor.fetchone()[0]}")
finally:
    # 关闭连接
    if conn:
        conn.close()

注意事项

  • 确保你的本地机器或EC2实例的安全组规则允许3306端口访问RDS实例
  • 证书路径要准确,否则会出现连接失败的错误
  • 如果连接时报SSL相关错误,检查证书是否正确、RDS实例的SSL强制配置是否生效

内容的提问来源于stack exchange,提问作者Animesh Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 07:36:18