使用 psql 客户端连接

您可以使用 PostgreSQL 命令行客户端连接到 Cloud SQL。本页介绍如何将 psql 客户端连接到 Cloud SQL 实例,无论是在本地客户端机器、Compute Engine 虚拟机上还是在 Cloud Shell 运行。

准备工作

在使用 psql 客户端连接到 Cloud SQL 实例之前,请执行以下操作:

在本地机器或 Compute Engine 虚拟机上使用 PostgreSQL 客户端

如需使用 psql 客户端连接到 Cloud SQL 实例,请完成以下三项简要任务:

  1. 安装客户端
  2. 配置对 Cloud SQL 实例的访问权限
  3. 连接到 Cloud SQL 实例

安装客户端

如需安装 psql 客户端,请执行以下操作:

Debian/Ubuntu

通过软件包管理系统安装 psql 客户端:

sudo apt-get update
sudo apt-get install postgresql-client

CentOS/RHEL

通过软件包管理系统安装 psql 客户端:

sudo yum install postgresql

openSUSE

通过软件包管理系统安装 psql 客户端:

sudo zypper install postgresql

其他平台

  1. PostgreSQL 下载页面下载适用于您的平台的 PostgreSQL 核心发行版。
    核心发行版包含 psql 客户端。
  2. 按照下载页面上的说明安装 PostgreSQL 数据库。

配置对 Cloud SQL 实例的访问权限

如需配置对实例的访问权限,请执行以下操作:

  1. 从客户端机器或 Compute Engine 虚拟机实例中,使用我的 IP 是什么以查看客户端机器的 IP 地址。
  2. 复制该 IP 地址。
  3. 在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  4. 如需打开实例的概览页面,请点击实例名称。
  5. 从 SQL 导航菜单中选择连接
  6. 选择网络标签页。
  7. 已获授权的网络部分中,点击添加网络,然后输入已安装该客户端的机器的 IP 地址。
  8. 点击完成,随后点击页面底部的保存以保存更改。
  9. 连接到实例(可以使用 SSL/TLS,也可以不加密(不使用 SSL/TLS))。

在不加密的情况下连接到 Cloud SQL 实例

如需允许在不加密的情况下进行连接,实例的 SSL 模式必须设置为 ALLOW_UNENCRYPTED_AND_ENCRYPTED。在 Google Cloud 控制台中,等效配置是允许未加密的网络流量

如需详细了解实例的 SSL/TLS 配置,请参阅配置 SSL/TLS 证书

如需连接到实例,请执行以下操作:

  1. 确认您已安装客户端配置对实例的访问权限
  2. 启动 psql 客户端:
    psql "sslmode=disable dbname=postgres user=postgres hostaddr=INSTANCE_IP_ADDRESS"
  3. 输入密码。
  4. 系统会显示 psql 提示符。

使用 SSL/TLS 连接到您的 Cloud SQL 实例

如需使用 SSL/TLS 和内置身份验证连接到您的实例,请执行以下操作:

  1. 启动 psql 客户端:
    psql "sslmode=require \
          hostaddr=INSTANCE_IP_ADDRESS \
          user=postgres dbname=DB_NAME"
       

    例如:

    psql "sslmode=require \
          hostaddr=203.12.34.56 \
          user=postgres dbname=postgres"
       

    您也可能希望创建一个连接服务文件,以管理连接参数,尤其是在连接到多个实例时更是如此。如需了解详情,请参阅 PostgreSQL 文档

  2. 输入密码。即使在使用 SSL/TLS 时 PostgreSQL 支持无密码连接,Cloud SQL 也需要该密码。
  3. 您可以在连接信息中查找密码来确认连接已加密:
    SSL connection (cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128)
    

使用 SSL/TLS 和客户端证书验证连接到您的 Cloud SQL 实例

如果您的 Cloud SQL 实例上的 ssl_mode 配置为 TRUSTED_CLIENT_CERTIFICATE_REQUIRED,则您还必须在登录时提供经过验证的客户端身份。

如需通过客户端验证使用 SSL/TLS 证书进行连接,您需要以下各项:

  • client-cert.pem 文件中包含客户端公钥证书。
  • client-key.pem 文件中包含客户端私钥。

此外,如需让客户端验证服务器的身份以实现双向身份验证,请指定服务器证书 server-ca.pem

例如,如需启动 psql 客户端,请运行以下命令:
   psql "sslmode=verify-ca sslrootcert=server-ca.pem \
      sslcert=client-cert.pem sslkey=client-key.pem \
      hostaddr=INSTANCE_IP_ADDRESS \
      user=postgres dbname=DB_NAME"
   

如果您没有客户端证书和对应的私钥,请创建新的客户端证书

在 Cloud Shell 中使用客户端

如需连接到 Cloud SQL 实例(仅限公共 IP),请执行以下操作:

  1. 转到 Google Cloud 控制台。

    转到 Google Cloud 控制台

  2. 点击工具栏右侧的 Cloud Shell 图标

    Cloud Shell 的初始化需要一些时间。

  3. 在 Cloud Shell 提示符处,使用内置的客户端连接到您的 Cloud SQL 实例:
    gcloud sql connect INSTANCE_ID \
    --user=postgres
  4. 输入密码。

gcloud sql connect 命令不支持使用专用 IP 或使用 SSL/TLS 连接到 Cloud SQL 实例。如需使用加密进行连接,请在 Cloud Shell 中安装和使用代理:

  1. /home/USER 目录中安装代理(Linux 64 位)。
  2. 使用 gcloud CLI 身份验证启动代理:

    ./cloud-sql-proxy INSTANCE_CONNECTION_NAME &

  3. 使用 TCP 连接来连接到数据库:

    psql -U USERNAME --host=127.0.0.1

后续步骤

自行试用

如果您是 Google Cloud 新手,请创建一个账号来评估 Cloud SQL 在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。

免费试用 Cloud SQL