クイックスタート: Azure CLI を使用して Azure Database for MySQL - フレキシブル サーバーのインスタンスを作成する

適用対象: Azure Database for MySQL - フレキシブル サーバー

このクイックスタートでは、Azure Cloud ShellAzure CLI のコマンドを使用して、Azure Database for MySQL - フレキシブル サーバーのインスタンスを 5 分で作成する方法について説明します。

Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。 現在、Azure 無料アカウントがあれば、Azure Database for MySQL - フレキシブル サーバーを 12 か月間無料でお試しいただけます。 詳細については、Azure Database for MySQL - フレキシブル サーバーの無料トライアルに関するページを参照してください。

Azure Cloud Shell を開く

Azure Cloud Shell は無料の対話型シェルで、これを使用してこの記事で説明しているステップを実行することができます。 Cloud Shell には Azure の一般的なツールがプレインストールされており、お使いのアカウントで使用できるように構成されています。

Cloud Shell を開くには、コード例の右上隅にある [使ってみる] を選択します。

https://shell.azure.com/bash に移動して、別のブラウザー タブで Cloud Shell を開くこともできます。 [コピー] を選択して、コード ブロックのコンテンツをコピーします。 そのコードを Cloud Shell に貼り付け、Enter キーを押して実行します。

Azure CLI をローカルにインストールして使用する場合、このクイックスタートでは、Azure CLI バージョン 2.0 以降が必要です。 Azure CLI のインストールのバージョンを確認するには、 az --version を実行します。 インストールまたはアップグレードが必要な場合は、Azure CLI のインストールに関するページを参照してください。

前提条件

az login コマンドを使用して、お使いのアカウントにサインインします。 id プロパティを書き留めておきます。 id プロパティは、お使いの Azure アカウントのサブスクリプション ID を示します。

az login

az account set コマンドを使用して、お使いの Azure アカウントの特定のサブスクリプションを選択します。 az login 出力の id の値をメモしておいて、このコマンドの subscription 引数の値として使用します。

複数のサブスクリプションをお持ちの場合は、リソースの課金対象にするサブスクリプションを選択します。 サブスクリプションの一覧を取得するには、az account list を使用します。

az account set --subscription <subscription ID>

Azure Database for MySQL フレキシブル サーバーを作成する

az group create コマンドを使用して、Azure リソース グループを作成します。 次に、そのリソース グループ内に Azure Database for MySQL フレキシブル サーバーを作成します。 必ず一意の名前を指定してください。 次の例では、eastus2 の場所に myresourcegroup という名前のリソース グループを作成します。

az group create --name myresourcegroup --location eastus2

az mysql flexible-server create コマンドを使用して Azure Database for MySQL フレキシブル サーバーを作成します。 1 つのサーバーに複数のデータベースを含めることができます。 次のコマンドでは、サービスの既定値と Azure CLI のローカル コンテキストからの値を使用して、サーバーを作成します。

az mysql flexible-server create

作成されたサーバーには、次の属性があります。

  • 自動生成されたサーバー名、管理者ユーザー名、管理者パスワード、リソース グループ名 (ローカル コンテキストでまだ指定されていない場合)。リソース グループ名は、リソース グループと同じ場所にあります。
  • 残りのサーバー構成のサービスの既定値: コンピューティング レベル (バースト可能)、コンピューティング サイズ/SKU (B1MS)、バックアップの保持期間 (7 日間)、および MySQL のバージョン (5.7)。
  • 既定の接続方法は、自動生成された仮想ネットワークとサブネットを使用するプライベート アクセス (VNet 統合) です。

Note

サーバーの作成後に接続方法を変更することはできません。 たとえば、サーバーの作成時に [プライベート アクセス (VNet 統合)] を選択した場合、デプロイ後に [パブリック アクセス (許可されている IP アドレス)] に変更することはできません。 仮想ネットワーク統合を使用してサーバーに安全にアクセスするには、プライベート アクセスのあるサーバーを作成することを強くお勧めします。 プライベート アクセスの詳細については、ネットワークの概念に関するページを参照してください。

既定値を変更する場合は、Azure CLI のリファレンス ドキュメントで、Azure CLI の構成可能なパラメーターの全一覧を参照してください。

サンプル出力は次のとおりです。

Creating Resource Group 'groupXXXXXXXXXX'...
Creating new vnet "serverXXXXXXXXXVNET" in resource group "groupXXXXXXXXXX"...
Creating new subnet "serverXXXXXXXXXSubnet" in resource group "groupXXXXXXXXXX" and delegating it to "Microsoft.DBforMySQL/flexibleServers"...
Creating MySQL Server 'serverXXXXXXXXX' in group 'groupXXXXXXXXXX'...
Your server 'serverXXXXXXXXX' is using SKU 'Standard_B1ms' (Paid Tier). For pricing details, see https://aka.ms/mysql-pricing.
Creating MySQL database 'flexibleserverdb'...
Make a note of your password. If you forget your password, reset the password by running 'az mysql flexible-server update -n serverXXXXXXXXX -g groupXXXXXXXXXX -p <new-password>'.
{
  "connectionString": "server=serverXXXXXXXXX.mysql.database.azure.com;database=flexibleserverdb;uid=secureusername;pwd=securepasswordstring",
  "databaseName": "flexibleserverdb",
  "host": "serverXXXXXXXXX.mysql.database.azure.com",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/groupXXXXXXXXXX/providers/Microsoft.DBforMySQL/flexibleServers/serverXXXXXXXXX",
  "location": "East US 2",
  "password": "securepasswordstring",
  "resourceGroup": "groupXXXXXXXXXX",
  "skuname": "Standard_B1ms",
  "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/groupXXXXXXXXXX/providers/Microsoft.Network/virtualNetworks/serverXXXXXXXXXVNET/subnets/serverXXXXXXXXXSubnet",
  "username": "secureusername",
  "version": "5.7"
}

既定値を変更する場合は、Azure CLI のリファレンス ドキュメントで、Azure CLI の構成可能なパラメーターの全一覧を参照してください。

データベースの作成

まだ作成していない場合は、次のコマンドを実行して、newdatabase というデータベースを作成します。

az mysql flexible-server db create -d newdatabase

Note

Azure Database for MySQL - フレキシブル サーバーへの接続では、ポート 3306 を使用して通信が行われます。 企業ネットワーク内から接続を試みる場合、ポート 3306 を使用したアウトバウンド トラフィックが許可されていない場合があります。 会社の IT 部門によってポート 3306 が開放されない限り、サーバーに接続することはできません。

接続情報の取得

サーバーに接続するには、ホスト情報とアクセス資格情報を指定する必要があります。

az mysql flexible-server show --resource-group myresourcegroup --name mydemoserver

結果は JSON 形式です。 fullyQualifiedDomainNameadministratorLogin の各値を書き留めておきます。 JSON 出力の例を次に示します。

{
  "administratorLogin": "myadminusername",
  "administratorLoginPassword": null,
  "delegatedSubnetArguments": {
    "subnetArmResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myresourcegroup/providers/Microsoft.Network/virtualNetworks/mydemoserverVNET/subnets/mydemoserverSubnet"
  },
  "fullyQualifiedDomainName": "mydemoserver.mysql.database.azure.com",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myresourcegroup/providers/Microsoft.DBforMySQL/flexibleServers/mydemoserver",
  "location": "East US 2",
  "name": "mydemoserver",
  "publicNetworkAccess": "Disabled",
  "resourceGroup": "myresourcegroup",
  "sku": {
    "capacity": 0,
    "name": "Standard_B1ms",
    "tier": "Burstable"
  },
  "storageProfile": {
    "backupRetentionDays": 7,
    "fileStorageSkuName": "Premium_LRS",
    "storageAutogrow": "Disabled",
    "storageIops": 0,
    "storageMb": 10240
  },
  "tags": null,
  "type": "Microsoft.DBforMySQL/flexibleServers",
  "version": "5.7"
}

Azure CLI を使用して接続し、接続をテストする

Azure Database for MySQL - フレキシブル サーバーを使用すると、Azure CLI の az mysql flexible-server connect コマンドを使用して、お使いのフレキシブル サーバーに接続できます。 このコマンドを使用すると、mysql.exe や MySQL Workbench をインストールすることなく、データベース サーバーへの接続のテスト、クイック ベーシック データベースの作成、サーバーに対する直接クエリを実行できます。 コマンドを対話モードで実行して、一度に複数のクエリを実行することもできます。

開発環境からデータベースへの接続をテストして検証するには、次のスクリプトを実行します。

az mysql flexible-server connect -n <servername> -u <username> -p <password> -d <databasename>

次に例を示します。

az mysql flexible-server connect -n mysqldemoserver1 -u dbuser -p "dbpassword" -d newdatabase

接続が成功すると、次の例のような出力が表示されます。

Connecting to newdatabase database.
Successfully connected to mysqldemoserver1.

接続に失敗する場合は、次の解決策を試してください。

  • クライアント マシンでポート 3306 が開放されているかどうかを確認します。
  • サーバー管理者のユーザー名とパスワードが正しいことを確認します。
  • クライアント マシンにファイアウォール規則が構成されていることを確認します。
  • 仮想ネットワークでのプライベート アクセス用にサーバーを構成した場合、クライアント マシンが同じ仮想ネットワークに存在することを確認します。

1 つのクエリを実行するには、--querytext 引数 (-q) を使用します。

az mysql flexible-server connect -n <server-name> -u <username> -p "<password>" -d <database-name> --querytext "<query text>"

次に例を示します。

az mysql flexible-server connect -n mysqldemoserver1 -u dbuser -p "dbpassword" -d newdatabase -q "select * from table1;" --output table

az mysql flexible-server connect の使用の詳細については、Azure CLI の接続とクエリに関するページを参照してください。

MySQL コマンドライン クライアントを使用して接続する

仮想ネットワーク統合を使用するプライベート アクセスを使用して Azure Database for MySQL フレキシブル サーバーを作成した場合は、サーバーと同じ仮想ネットワーク内のリソースからサーバーに接続する必要があります。 仮想マシンを作成し、それを Azure Database for MySQL フレキシブル サーバーのインスタンスを作成したときに作成された仮想ネットワークに追加できます。 詳細については、プライベート アクセスの構成に関するページを参照してください。

パブリック アクセス (使用できる IP アドレス) を使用して Azure Database for MySQL - フレキシブル サーバーのインスタンスを作成した場合は、サーバー上のファイアウォール規則のリストにローカル IP アドレスを追加できます。 詳しいガイダンスについては、ファイアウォール規則の作成と管理に関するページを参照してください。

ローカル環境からサーバーに接続するには、mysql.exe または MySQL Workbench のどちらかを使用できます。 Azure Database for MySQL - フレキシブル サーバーでは、トランスポート層セキュリティ (TLS) (旧称 Secure Sockets Layer (SSL)) を使用して、クライアント アプリケーションを Azure Database for MySQL - フレキシブル サーバーのサービスに接続できます。 TLS は、データベース サーバーとクライアント アプリケーションの間の暗号化されたネットワーク接続を保証する業界標準のプロトコルです。これを使用することで、ユーザーはコンプライアンス要件に準拠することができます。 Azure Database for MySQL フレキシブル サーバーを使用して接続するには、証明機関の検証用にパブリック SSL 証明書をダウンロードします。 暗号化された接続を使用した接続や SSL の無効化の詳細については、暗号化された接続を使用した Azure Database for MySQL - フレキシブル サーバーへの接続に関するページを参照してください。

次の例は、MySQL コマンドライン クライアント ツールを使用して、Azure Database for MySQL フレキシブル サーバーに接続する方法を示しています。 まだインストールされていない場合は、ツールをインストールできます。 SSL 接続に必要な DigiCertGlobalRootCA 証明書をダウンロードします。 --ssl-mode=REQUIRED 接続文字列設定を使用して、TLS/SSL 証明書の検証を適用します。 ローカルの証明書ファイルのパスを --ssl-ca パラメーターに渡します。 値を実際のサーバー名とパスワードに置き換えてください。

sudo apt-get install mysql-client
wget --no-check-certificate https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem
mysql -h mydemoserver.mysql.database.azure.com -u mydemouser -p --ssl-mode=REQUIRED --ssl-ca=DigiCertGlobalRootCA.crt.pem

パブリック アクセスを使用して Azure Database for MySQL フレキシブル サーバーをプロビジョニングした場合は、Azure Cloud Shell で、プレインストールされた MySQL クライアントを使用して、Azure Database for MySQL フレキシブル サーバーに接続することもできます。

Azure Cloud Shell を使用して Azure Database for MySQL フレキシブル サーバーに接続するためには、Azure Cloud Shell から Azure Database for MySQL フレキシブル サーバーへのネットワーク アクセスを許可する必要があります。 アクセスを許可するには、Azure portal でお使いの Azure Database for MySQL フレキシブル サーバーの [ネットワーク] ペインに移動します。 [ファイアウォール] で、次のスクリーンショットに示すように、[Azure 内の任意の Azure サービスにこのサーバーへのパブリック アクセスを許可する] チェックボックスをオンにします。 次に、[保存] を選択して、設定を保存します。

Screenshot that shows how to grant Azure Cloud Shell access to an Azure Database for MySQL flexible server for public access network configuration.

Note

[Azure 内の任意の Azure サービスにこのサーバーへのパブリック アクセスを許可する] チェック ボックスは、開発やテストの用途でのみオンにしてください。 この設定により、すべての Azure サービス (または資産) に割り当てられた IP アドレスからの接続 (他の Azure サブスクリプションからの接続など) を許可するようにファイアウォールが構成されます。

[試してみる] を選択して、Azure Cloud Shell を開きます。 Cloud Shell で、次のコマンドを使用して、Azure Database for MySQL フレキシブル サーバーに接続します。 実際のサーバー名、ユーザー名、パスワードをコマンドで使用します。

wget --no-check-certificate https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem
mysql -h mydemoserver.mysql.database.azure.com -u mydemouser -p --ssl=true --ssl-ca=DigiCertGlobalRootCA.crt.pem

重要

Cloud Shell を使用して Azure Database for MySQL フレキシブル サーバーに接続する場合は、--ssl=true パラメーターを使用します。 --ssl-mode=REQUIREDは使用しないでください。

このガイダンスが重要である主な理由は、Azure Cloud Shell に MariaDB のディストリビューションの mysql.exe クライアントがプレインストールされていることです。 mysql.exe クライアントには --ssl パラメーターが必要です。 Oracle のディストリビューションの MySQL クライアントには --ssl-mode パラメーターが必要です。

Azure Database for MySQL フレキシブル サーバーに接続するときに次のエラー メッセージが表示された場合は、ファイアウォール規則を設定するときに [Azure 内の任意の Azure サービスにこのサーバーへのパブリック アクセスを許可する] チェックボックスをオンにしなかったか、そのオプションが保存されていません。 ファイアウォール規則を設定してからやり直してください。

ERROR 2002 (HY000): Can't connect to MySQL server on <servername> (115)

リソースをクリーンアップする

この記事で作成したリソースを別のクイックスタートやチュートリアルで使用する必要がなければ、次のコマンドを実行して削除してもかまいません。

az group delete --name myresourcegroup

自分が作成したフレキシブル サーバーのみを削除する場合は、次のコマンドを実行します。

az mysql flexible-server delete --resource-group myresourcegroup --name mydemoserver