更新时间:2024-02-01 GMT+08:00

通过内网连接RDS for PostgreSQL实例(Linux方式)

RDS for PostgreSQL实例购买完成后,可以先登录到Linux弹性云服务器,在ECS上安装PostgreSQL客户端,然后执行psql命令行通过PostgreSQL内网IP连接到实例。

通过PostgreSQL客户端连接实例的方式有SSL连接。SSL连接通过了加密功能,具有更高的安全性。

创建RDS for PostgreSQL实例时默认开启SSL,实例创建完成后,不支持关闭。

开启SSL连接数据库实例后,数据库的只读、读写性能是未开启SSL连接数据库实例的80%左右。

步骤1:购买ECS

  1. 登录管理控制台,查看是否有弹性云服务器。
    • 有Linux弹性云服务器,执行3
    • 无Linux弹性云服务器,执行2
    图1 ECS实例
  2. 购买弹性云服务器时,选择Linux操作系统,例如CentOS。

    由于需要在ECS下载PostgreSQL客户端,因此需要为ECS绑定弹性公网IP(EIP),并且选择与RDS for PostgreSQL实例相同的区域、VPC和安全组,便于RDS for PostgreSQL和ECS网络互通。

    购买Linux弹性云服务器请参考《弹性云服务器快速入门》中“购买弹性云服务器”章节。

  3. 在ECS实例基本信息页,查看ECS实例的区域和VPC。
    图2 ECS基本信息

  4. 在RDS for PostgreSQL实例基本信息页,查看RDS实例的区域和VPC。
    图3 PostgreSQL基本信息
  5. 确认ECS实例与RDS for PostgreSQL实例是否处于同一区域、同一VPC内。

步骤2:测试连通性并安装PostgreSQL客户端

  1. 登录ECS实例,请参见《弹性云服务器用户指南》中“Linux弹性云服务器远程登录(VNC方式)”。
  2. 在RDS“实例管理”页面,单击实例名称进入“基本信息”页面。
  3. 选择“连接管理”,在“连接信息”模块获取实例的内网地址和数据库端口。
    图4 连接信息
  4. 在ECS上测试是否可以正常连接到RDS for PostgreSQL实例内网地址的端口。

    telnet 192.168.0.7 5432

    • 如果可以通信,说明网络正常。
    • 如果无法通信,请检查安全组规则。
      • 查看ECS的安全组的出方向规则,如果目的地址不为“0.0.0.0/0”且协议端口不为“全部”,需要将RDS实例的内网IP地址和端口添加到出方向规则。
        图5 ECS的安全组
      • 查看RDS的安全组的入方向规则,需要将ECS实例的私有IP地址和端口添加到入方向规则,具体操作请参见设置安全组规则
  5. 打开客户端安装页面。

    PostgreSQL官网提供了针对不同操作系统的客户端安装方法

    下面将以CentOS下PostgreSQL 12版本为例,介绍安装PostgreSQL客户端。

  6. 选择数据库版本、操作系统、操作系统架构,在弹性云服务器上执行以下命令安装PostgreSQL客户端。
    sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    图6 安装客户端
    • 数据库版本,选择与RDS for PostgreSQL数据库实例一致的版本。
    • 操作系统,选择与弹性云服务器一致的操作系统。
    • 操作系统架构,选择与弹性云服务器一致的操作系统架构。
    图7 安装rpm包
    图8 客户端安装完成

步骤3:使用命令行连接实例(SSL加密)

  1. 在RDS“实例管理”页面,单击实例名称进入“基本信息”页面。
  2. 选择“连接管理”。
  3. 在“连接信息”模块,单击“SSL”处的,下载“Certificate Download”压缩包,解压后获取根证书(ca.pem)和捆绑包(ca-bundle.pem)。
    图9 下载证书
  4. 将根证书(ca.pem)上传到ECS。
    • 推荐使用TLS v1.2及以上协议,低于该版本可能存在安全风险。
    • 协议算法推荐使用EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EDH+aRSA+AESGCM:EDH+aDSS+AESGCM:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!SRP:!RC4,使用其他选项可能存在安全风险。
    • 根证书捆绑包(ca-bundle.pem)包含2017年4月之后的新根证书和原有根证书。
    • ca.pem和ca-bundle.pem都可以实现SSL连接,ca-bundle.pem文件包含ca.pem,使用ca.pem即可。
  5. 在ECS上执行以下命令连接RDS for PostgreSQL实例。

    psql --no-readline -h <host> -p <port> "dbname=<database> user=<user> sslmode=verify-ca sslrootcert=<ca-file-directory>"

    示例:

    psql --no-readline -h 192.168.0.7 -p 5432 "dbname=postgres user=root sslmode=verify-ca sslrootcert=/root/ca.pem"

    表1 参数说明

    参数

    说明

    <host>

    3中获取的内网地址。

    <port>

    3中获取的数据库端口,默认5432。

    <database>

    需要连接的数据库名,默认的管理数据库是postgres。

    <user>

    管理员账号root。

    <ca-file-directory>

    SSL连接CA证书路径,该文件需放在执行该命令的路径下。

    sslmode

    SSL连接模式,设置为“verify-ca”,通过检查证书链(Certificate Chain,以下简称CA)来验证服务是否可信任。

  6. 出现如下提示时,输入数据库账号对应的密码。
    Password:
    出现如下信息,表示连接成功。
    SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)

后续操作

登录实例后,您可以创建数据库,进行数据迁移等操作,具体请参见: