快速入门:使用 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 定价。
重要
- 服务器上的默认 PostgreSQL 版本为 9.6。 若要查看支持的所有版本,请参阅支持的 PostgreSQL 主要版本。
- 默认情况下,服务器上启用 SSL。 有关 SSL 的详细信息,请参阅配置 SSL 连接。
配置基于服务器防火墙规则
使用 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