このサンプル CLI スクリプトを使用すると、VNet に Azure Database for MySQL - フレキシブル サーバーが作成され (プライベート アクセス接続方法)、VNet 内の VM からサーバーに接続されます。
Note
サーバーの作成後に、接続方法を変更することはできません。 たとえば、作成時に "プライベート アクセス (VNet 統合)" を使用してサーバーを作成した場合、作成後に "パブリック アクセス (許可された IP アドレス)" に変更することはできません。 接続方法の詳細については、「Azure Database for MySQL の接続およびネットワークの概念 - フレキシブル サーバー」を参照してください。
Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。 現在、Azure 無料アカウントがあれば、Azure Database for MySQL - フレキシブル サーバーを 12 か月間無料でお試しいただけます。 詳細については、「Azure 無料アカウントを使用して Azure Database for MySQL - フレキシブル サーバーを無料で試す」を参照してください。
前提条件
Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の概要」を参照してください。
CLI リファレンス コマンドをローカル環境で実行したい場合は、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。
ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、「 Azure CLI を使用した Azure への認証」を参照してください。
初回使用時に求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、「Azure CLI で拡張機能を使用および管理する」を参照してください。
インストールされているバージョンと依存ライブラリを調べるには、az version を実行します。 最新バージョンにアップグレードするには、az upgrade を実行します。
サンプル スクリプト
Azure Cloud Shell を起動する
Azure Cloud Shell は無料のインタラクティブ シェルです。これを使って、この記事の手順を行うことができます。 一般的な Azure ツールが事前にインストールされており、アカウントで使用するように構成されています。
Cloud Shell を開くには、コード ブロックの右上隅にある [使ってみる] を選択します。 https://shell.azure.com に移動して、別のブラウザー タブで Cloud Shell を起動することもできます。
Cloud Shell が開いたら、環境で Bash が選択されていることを確認します。 後続のセッションでは、Bash 環境で Azure CLI を使用します。[コピー] を選択してコードのブロックをコピーし、Cloud Shell に貼り付けます。その後、Enter キーを押してそれを実行します。
Azure にサインインする
Cloud Shell は、サインインした最初のアカウントで自動的に認証されます。 別のサブスクリプションを使ってサインインするには、次のスクリプトを使用し、subscriptionId をご使用の Azure サブスクリプション ID に置き換えます。
Azure アカウントをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
subscription="subscriptionId" # Set Azure subscription ID here
az account set -s $subscription # ...or use 'az login'
詳細については、アクティブなサブスクリプションの設定または対話形式のログインに関する記事をご覧ください。
スクリプトを実行する
# Create an Azure Database for MySQL - Flexible Server in a VNet
# Variable block
let "randomIdentifier=$RANDOM*$RANDOM"
location="East US"
resourceGroup="msdocs-mysql-rg-$randomIdentifier"
tag="create-connect-server-in-vnet-mysql"
server="msdocs-mysql-server-$randomIdentifier"
sku="Standard_D2ds_v4"
tier="GeneralPurpose"
storageSize="64"
storageAutoGrow="Enabled"
vNet="vNet-$randomIdentifier"
vNetAddressPrefix="155.5.0.0/24"
mySqlSubnet="msdocs-subnet-mysql-$randomIdentifier"
mySqlSubnetAddressPrefix="155.5.0.0/28"
rule="msdocs-rule-$randomIdentifier"
login="azureuser"
password="Pa$$w0rD-$randomIdentifier"
image="Ubuntu2204"
vm="msdocs-vm-$randomIdentifier"
vmSubnet="msdocs-subnet-vm-$randomIdentifier"
vmSubnetAddressPrefix="155.5.0.48/28"
dns="msdocsDNS.private.mysql.database.azure.com"
ipSku="basic"
echo "Using resource group $resourceGroup with login: $login, password: $password..."
# Create MySQL server in a VNET
# Create a resource group
echo "Creating $resourceGroup in $location..."
az group create --name $resourceGroup --location "$location" --tags $tag
# Get available service endpoints for Azure region output in JSON
echo "List of available service endpoints for $location"
az network vnet list-endpoint-services --location "$location"
# Create the virtual network
echo "Creating $vNet"
az network vnet create --resource-group $resourceGroup --name $vNet --address-prefixes $vNetAddressPrefix --location "$location"
# Creates the mySqlSubnet
echo "Creating $mySqlSubnet in $vNet"
az network vnet subnet create --resource-group $resourceGroup --name $mySqlSubnet --vnet-name $vNet --address-prefix $mySqlSubnetAddressPrefix --service-endpoints Microsoft.SQL
# View service endpoints configured on a subnet
echo "Viewing the service endpoint to $mySqlSubnet in $vNet"
az network vnet subnet show --resource-group $resourceGroup --name $mySqlSubnet --vnet-name $vNet
# Create private DNS zone
echo "Creating $dns"
az network private-dns zone create -g $resourceGroup -n $dns
# OPTIONAL : View all SKUs for Flexible Server
# az mysql flexible-server list-skus --location "$location"
# Name of a server maps to DNS name and is thus required to be globally unique in Azure.
# Create a MySQL Flexible server in the resource group
echo "Creating $server within $mySqlSubnet"
az mysql flexible-server create --name $server --resource-group $resourceGroup --location "$location" --sku-name $sku --tier $tier --storage-size $storageSize --storage-auto-grow $storageAutoGrow --admin-user $login --admin-password $password --vnet $vNet --subnet $mySqlSubnet --private-dns-zone $dns
# Connect to the MySQL server from a VM in the same VNET
# Create a subnet for the virtual machine within the virtual network
echo "Creating $vmSubnet within $vNet"
az network vnet subnet create --resource-group $resourceGroup --vnet-name $vNet --name $vmSubnet --address-prefixes $vmSubnetAddressPrefix
# Create a VM within the VNET to connect to MySQL Flex Server
echo "Creating $vm within $vmSubnet"
az vm create --resource-group $resourceGroup --name $vm --location "$location" --image $image --admin-username $login --generate-ssh-keys --vnet-name $vNet --subnet $vmSubnet --public-ip-sku $ipSku
# Open port 80 for web traffic
echo "Opening port 80 for web traffic"
az vm open-port --port 80 --resource-group $resourceGroup --name $vm
# Follow steps in the parent article to test connectivity to the MySQL server from the VM
VM から MySQL サーバーへの接続をテストする
SSH を使用して接続し、MySQL ツールをダウンロードして、そのツールを使って MySQL サーバーに接続し、以下の手順によって、VM から MySQL サーバーへの接続をテストします。
VM に SSH 接続するには、まずパブリック IP アドレスを取得し、次に MySQL ツールを使用って接続します
PUBLIC_IP=$(az vm list-ip-addresses --resource-group $RESOURCE_GROUP --name $VM --query "[].virtualMachine.network.publicIpAddresses[0].ipAddress" --output tsv) ssh azureuser@$PUBLIC_IPMySQL ツールをダウンロードし、サーバーに接続します。 <[サーバー名]> と <[管理者名]> を実際の値に置き換えます。
sudo apt-get update sudo apt-get install mysql-client wget --no-check-certificate https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem mysql -h <replace_with_server_name>.mysql.database.azure.com -u mysqladmin -p --ssl-mode=REQUIRED --ssl-ca=DigiCertGlobalRootCA.crt.pem
リソースをクリーンアップする
次のコマンドを使用して、az group delete コマンドで、リソース グループと、それに関連付けられているすべてのリソースを削除します (これらのリソースが継続的に必要でない場合)。 これらのリソースの一部は、削除や作成に時間がかかる場合があります。
az group delete --name $RESOURCE_GROUP
サンプル リファレンス
このスクリプトでは、次のコマンドを使用します。 表内の各コマンドは、それぞれのドキュメントにリンクされています。
| コマンド | メモ |
|---|---|
| az group create コマンドを使用して Azure のグループを作成します。 | すべてのリソースを格納するリソース グループを作成します。 |
| az mysql flexible-server create コマンドは、MySQLの柔軟なサーバーを作成します。 | データベースをホストするフレキシブル サーバーを作成します。 |
| az network vnet subnet create | VNet 内にサブネットを作成します。 |
| az vm create | Azure 仮想マシンを作成します。 |
| az vm open-port | 指定したポートで受信トラフィックへの VM を開きます。 |
| az group delete コマンドを使用して、リソースグループを削除します。 | 入れ子になったリソースすべてを含むリソース グループを削除します。 |