连接到 Snowflake Postgres¶
创建 Snowflake Postgres 实例后,您可以使用任何 PostgreSQL 客户端(例如 psql 或 DBeaver)连接到该实例。要建立连接,您需要在客户端中配置以下信息:
实例的 主机名。这是虚拟机主机的 URL。
用户名。创建实例时,默认会创建
snowflake_admin用户,该用户专为管理访问而设计。要连接的 Postgres 数据库。此参数是建立 Postgres 连接所必需的。默认数据库名为
postgres。用户的 密码。
以下是与 psql 命令行客户端一起使用的这些连接详细信息的示例:
$ psql -h abcefg.snowflake.app -U snowflake_admin -d postgres
(psql 将提示输入密码)
如果需要指定端口,请使用 5432:
$ psql -h abcefg.snowflake.app -U snowflake_admin -p 5432 -d postgres
重要
连接至 Snowflake Postgres 实例必须使用 SSL。
关于连接字符串¶
通过 Snowsight 创建 Postgres 实例时,Snowflake Postgres 会提供一个 libpq URI 格式 (https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING) 的连接字符串,用于直接通过 psql 连接或输入到您的应用程序配置中。
备注
除非您为特定角色显式重置访问权限,否则集群的连接字符串在集群管理操作中将保持不变。
作为数据库 URL 的连接字符串包含以下参数:
protocol:
postgres://username:有关更多详细信息,请参阅 Snowflake Postgres 角色。
密码
主机名
port:5432
database_name:默认为
postgres
然后使用这些参数来构建符合以下格式的 URI 连接字符串:
postgresql://<username>:<password>@hostname:<port>/<database_name>
如果您的客户端环境未以其他方式配置为强制执行 SSL 连接,您可以在 URI 后追加 ?sslmode=require:
postgresql://<username>:<password>@hostname:<port>/<database_name>?sslmode=require
sslmode (https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNECT-SSLMODE) 参数将接受不同的值,这些值表示要使用的不同级别的 SSL 加密和证书验证。sslmode=require 是执行 SSL 加密所需的最低级别。关于配置客户端以对您的 Snowflake Postgres 服务器证书执行 SSL 证书验证,请参阅 Snowflake Postgres SSL 证书。
您可以在连接 URI 中以与上述指定 sslmode 相同的方式指定其他几个客户端连接参数。有关完整列表,请参阅 PostgreSQL 文档的 URI连接参数 <https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS (https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS)>`_ ` 列表.
您也可以通过 libpq <https://www.postgresql.org/docs/current/libpq-envars.html (https://www.postgresql.org/docs/current/libpq-envars.html)>`_ 识别的 ` 环境变量来设置其中的许多参数。例如,以下代码确保 psql 连接建立时设置 ?sslmode=require:
export PGSSLMODE=require
psql -h {hostname} -U {username} {dbname}
在为那些不提供所需连接参数配置选项的应用框架配置连接时,通过环境变量设置客户端连接参数会很有用。
备注
对于使用非基于
libpq的数据库驱动程序的应用,请查阅其他驱动程序的文档,了解它们的客户端配置参数选项和指定格式。例如,PostgreSQL 的 JDBC 驱动程序 (https://jdbc.postgresql.org/documentation/use/) 提供了许多与libpq相当的参数,但它们在 URIs 中的指定方式略有不同。