快速入门:使用 Azure CLI 创建 Azure Database for PostgreSQL 服务器

适用于: Azure Database for PostgreSQL - 单一服务器

重要

Azure Database for PostgreSQL - 单一服务器即将停用。 我们强烈建议升级到 Azure Database for PostgreSQL 灵活服务器。 有关迁移到 Azure Database for PostgreSQL - 灵活服务器的详细信息,请参阅 Azure Database for PostgreSQL 单一服务器会发生什么情况?

本快速入门介绍如何使用 Azure CLI 命令在 5 分钟内创建单个 Azure Database for PostgreSQL 服务器。

提示

请考虑使用更简单的 az postgres up Azure CLI 命令。 试用快速入门

如果没有 Azure 试用版订阅,请在开始前创建一个试用版订阅

先决条件

如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI

  • 如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录

  • 出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展

  • 运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade

登录 Azure

使用以下脚本通过其他订阅登录,将 <Subscription ID> 替换为 Azure 订阅 ID。 如果没有 Azure 试用版订阅,请在开始前创建一个试用版订阅

az cloud set -n AzureChinaCloud
az login

subscription="<subscriptionId>" # add subscription here

az account set -s $subscription # ...or use 'az login'

有关详细信息,请参阅设置有效的订阅登录

设置参数值

后续命令使用以下值来创建数据库和所需资源。 服务器名称需要在整个 Azure 中全局唯一,因此使用 $RANDOM 函数创建服务器名称。

根据需要更改环境的位置。 替换 IP 地址范围中的 0.0.0.0,以匹配你的特定环境。 使用正在使用的计算机的公共 IP 地址将服务器限制为只允许你的 IP 地址访问。

# Variable block
let "randomIdentifier=$RANDOM*$RANDOM"
location="China East 2"
resourceGroup="msdocs-postgresql-rg-$randomIdentifier"
tags="create-postgresql-server-and-firewall-rule"
server="msdocs-postgresql-server-$randomIdentifier"
sku="GP_Gen5_2"
login="azureuser"
password="Pa$$w0rD-$randomIdentifier"
# Specify appropriate IP address values for your environment
# to limit / allow access to the PostgreSQL server
startIp=0.0.0.0
endIp=0.0.0.0
echo "Using resource group $resourceGroup with login: $login, password: $password..."

创建资源组

使用“az group create”命令创建资源组。 Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。 以下示例在“chinaeast2”位置创建名为“myResourceGroup”的资源组:

# Create a resource group
echo "Creating $resourceGroup in $location..."
az group create --name $resourceGroup --location "$location" --tag $tag

创建服务器

使用 az postgres server create 命令创建服务器。

# Create a PostgreSQL server in the resource group
# Name of a server maps to DNS name and is thus required to be globally unique in Azure.
echo "Creating $server in $location..."
az postgres server create --name $server --resource-group $resourceGroup --location "$location" --admin-user $login --admin-password $password --sku-name $sku

注意

  • 服务器名称只能包含小写字母、数字和连字符 (-) 字符。 必须包含 3 到 63 个字符。 有关详细信息,请参阅 Azure Database for PostgreSQL 命名规则
  • 管理员用户的用户名不能是“azure_superuser”、“admin”、“administrator”、“root”、“guest”或“public”。
  • 密码必须包含以下字符类别中的三类(8 到 128 个字符):英文大写字母、英文小写字母、数字及非字母数字字符。
  • 有关 SKU 的信息,请参阅 Azure Database for PostgreSQL 定价

重要

配置基于服务器防火墙规则

使用 az postgres server firewall-rule create 命令创建防火墙规则,为本地环境提供连接到服务器的访问权限。

# Configure a firewall rule for the server 
echo "Configuring a firewall rule for $server for the IP address range of $startIp to $endIp"
az postgres server firewall-rule create --resource-group $resourceGroup --server $server --name AllowIps --start-ip-address $startIp --end-ip-address $endIp

提示

如果你不知道 IP 地址,请转到 WhatIsMyIPAddress.com 获取它。

注意

若要避免连接问题,请确保网络防火墙允许端口 5432。 Azure Database for PostgreSQL 服务器使用该端口。

列出基于服务器的防火墙规则

若要列出现有服务器防火墙规则,请运行 az postgres server firewall-rule list 命令。

# List firewall rules for the server
echo "List of server-based firewall rules for $server"
az postgres server firewall-rule list --resource-group $resourceGroup --server-name $server
# You may use the switch `--output table` for a more readable table format as the output.

输出将列出防火墙规则(如果有),默认情况下采用 JSON 格式。 可以使用 --output table 开关,对输出采用更易于读取的表格格式。

获取连接信息

若要连接到服务器,请提供主机信息和访问凭据。

az postgres server show --resource-group $resourceGroup --name $server

记下 administratorLogin 和 fullyQualifiedDomainName 值 。

使用 psql 连接到 Azure Database for PostgreSQL 服务器

psql 客户端是连接到 PostgreSQL 服务器的热门选择。 还可以在本地环境中使用 psql(如果可用)连接到服务器。 将使用新的 PostgreSQL 服务器自动创建空数据库 postgres。 可以使用该数据库与 psql 连接,如下面的代码所示。

psql --host=<server_name>.postgres.database.chinacloudapi.cn --port=5432 --username=<admin_user>@<server_name> --dbname=postgres

提示

如果更喜欢使用 URL 路径连接到 Postgres,则 URL 会使用 %40 对用户名中的 @ 符号进行编码。 例如,psql 的连接字符串将是:

psql postgresql://<admin_user>%40<server_name>@<server_name>.postgres.database.chinacloudapi.cn:5432/postgres

清理资源

使用 az group delete 命令删除资源组以及与其关联的所有资源 - 除非你持续需要这些资源。 其中一些资源在创建和删除时可能要稍等片刻。

az group delete --name $resourceGroup

后续步骤