你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

快速入门:使用 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 Cloud Shell 中使用 Azure CLI在 5 分钟内创建单个 Azure Database for PostgreSQL 服务器。

提示

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

如果没有 Azure 订阅,请在开始之前创建一个 Azure 免费帐户

先决条件

启动 Azure Cloud Shell

Azure Cloud Shell 是免费的交互式 shell,可以使用它运行本文中的步骤。 它预安装有常用 Azure 工具并将其配置与帐户一起使用。

若要打开 Cloud Shell,只需要从代码块的右上角选择“试一试”。 也可以通过转到 https://shell.azure.com 在单独的浏览器标签页中启动 Cloud Shell。

当 Cloud Shell 打开时,请验证是否为环境选择了“Bash”。 后续会话将在 Bash 环境中使用 Azure CLI,选择“复制”以复制代码块,将其粘贴到 Cloud Shell 中,然后按 Enter 来运行它。

登录 Azure

Cloud Shell 会在登录时使用的初始帐户下自动进行身份验证。 使用以下脚本通过其他订阅登录,将 <Subscription ID> 替换为 Azure 订阅 ID。 如果没有 Azure 订阅,请在开始之前创建一个 Azure 免费帐户

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="East US"
resourceGroup="msdocs-postgresql-rg-$randomIdentifier"
tag="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 资源的逻辑容器。 以下示例在 eastus 位置创建名为 myResourceGroup 的资源组:

# Create a resource group
echo "Creating $resourceGroup in $location..."
az group create --name $resourceGroup --location "$location" --tags $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 服务器的热门选择。 可以在 Azure Cloud Shell 中使用 psql 连接到服务器。 还可以在本地环境中使用 psql(如果可用)。 将使用新的 PostgreSQL 服务器自动创建空数据库 postgres。 可以使用该数据库与 psql 连接,如下面的代码所示。

psql --host=<server_name>.postgres.database.azure.com --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.azure.com:5432/postgres

清理资源

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

az group delete --name $resourceGroup

后续步骤