您可以使用 PostgreSQL 命令行客户端连接到 Cloud SQL。本页介绍如何将 psql
客户端连接到 Cloud SQL 实例,无论是在客户端机器、Compute Engine 虚拟机上还是在 Cloud Shell 本地运行。
准备工作
在使用 psql
客户端连接到 Cloud SQL 实例之前,请执行以下操作:
-
创建一个 Cloud SQL 实例,包括配置默认用户。
请参阅创建实例和为默认用户账号设置密码。
(可选)创建一个 Compute Engine 虚拟机实例,然后使用 SSH 连接到该实例。
确定您将如何连接到实例。
如需了解连接方案以及如何从中进行选择,请参阅连接方案简介。
在本地机器或 Compute Engine 虚拟机上使用 PostgreSQL 客户端
如需使用 psql
客户端连接到 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
其他平台
- 从 PostgreSQL 下载页面下载适用于您的平台的 PostgreSQL 核心发行版。
核心发行版包含 psql 客户端。 - 按照下载页面上的说明安装 PostgreSQL 数据库。
配置对 Cloud SQL 实例的访问权限
如需配置对实例的访问权限,请执行以下操作:
- 从客户端机器或 Compute Engine 虚拟机实例中,使用我的 IP 是什么以查看客户端机器的 IP 地址。
- 复制该 IP 地址。
-
在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。
- 如需打开实例的概览页面,请点击实例名称。
- 从 SQL 导航菜单中选择连接。
- 选择网络标签页。
- 在已获授权的网络部分中,点击添加网络,然后输入已安装该客户端的机器的 IP 地址。
- 点击完成,随后点击页面底部的保存以保存更改。
- 连接到实例(可以使用 SSL/TLS,也可以不加密(不使用 SSL/TLS))。
在不加密的情况下连接到 Cloud SQL 实例
如需允许在不加密的情况下进行连接,实例的 SSL 模式必须设置为 ALLOW_UNENCRYPTED_AND_ENCRYPTED
。在 Google Cloud 控制台中,等效配置是允许未加密的网络流量。
如需详细了解实例的 SSL/TLS 配置,请参阅配置 SSL/TLS 证书。
如需连接到实例,请执行以下操作:
- 确认您已安装客户端并配置对实例的访问权限。
- 启动
psql
客户端:psql "sslmode=disable dbname=postgres user=postgres hostaddr=INSTANCE_IP_ADDRESS"
- 输入密码。
- 系统会显示 psql 提示符。
使用 SSL/TLS 连接到您的 Cloud SQL 实例
如需使用 SSL/TLS 和内置身份验证连接到您的实例,请执行以下操作:
- 启动
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 文档。
- 输入密码。即使在使用 SSL/TLS 时 PostgreSQL 支持无密码连接,Cloud SQL 也需要该密码。
- 您可以在连接信息中查找密码来确认连接已加密:
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),请执行以下操作:
- 转到 Google Cloud 控制台。
- 点击工具栏右侧的 Cloud Shell 图标 。
Cloud Shell 的初始化需要一些时间。
- 在 Cloud Shell 提示符处,使用内置的客户端连接到您的 Cloud SQL 实例:
gcloud sql connect INSTANCE_ID \ --user=postgres
- 输入密码。
gcloud sql connect
命令不支持使用专用 IP 或使用 SSL/TLS 连接到 Cloud SQL 实例。如需使用加密进行连接,请在 Cloud Shell 中安装和使用代理:
- 在
/home/USER
目录中安装代理(Linux 64 位)。 - 使用 gcloud CLI 身份验证启动代理:
./cloud-sql-proxy INSTANCE_CONNECTION_NAME &
- 使用 TCP 连接来连接到数据库:
psql -U USERNAME --host=127.0.0.1
后续步骤
- 了解如何配置使用专用 IP 地址的实例。
- 了解从应用连接到实例的方案。
- 了解
psql
客户端如何与 SSL 配合使用。
自行试用
如果您是 Google Cloud 新手,请创建一个账号来评估 Cloud SQL 在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
免费试用 Cloud SQL