MySQL ユーザーを作成、管理する

このページでは、Cloud SQL インスタンスに対して次の操作を行う方法について説明します。

  • デフォルトのユーザー アカウントを構成します。
  • 他のユーザー アカウントを作成、削除、更新します。

Cloud SQL でのユーザーの詳細については、MySQL ユーザーをご覧ください。

始める前に

以下のタスクを完了する前に、Cloud SQL インスタンスを作成します。詳細については、インスタンスの作成をご覧ください。

データベースの管理クライアントを使用してユーザーを管理する場合は、インスタンスでデフォルト ユーザーを構成しておく必要があります。詳細については、デフォルト アカウントの構成をご覧ください。

また、インスタンスに接続された管理クライアントを構成しておく必要があります。詳細については、外部アプリケーションのための接続オプションをご覧ください。

デフォルト ユーザー アカウントの構成

新しい Cloud SQL インスタンスを作成する場合、インスタンスに接続するには、デフォルト ユーザー アカウントを構成しておく必要があります。

Cloud SQL for MySQL では、デフォルト ユーザーは root です。

デフォルト ユーザーを構成するには:

Console(第 2 世代)

  1. Google Cloud Console の Cloud SQL インスタンス ページに移動します。

    Cloud SQL インスタンス ページに移動

  2. インスタンスをクリックして [概要] ページを開きます。
  3. [ユーザー] タブを選択します。
  4. % (any host) のホスト値で root ユーザーを検索し、その他の操作メニュー その他アイコン から [パスワードを変更] を選択します。
  5. 覚えやすく強力なパスワードを指定し、[OK] をクリックします。

Console(第 1 世代)

  1. Google Cloud Console の Cloud SQL インスタンス ページに移動します。

    [Cloud SQL インスタンス] ページに移動

  2. 第 1 世代インスタンスをクリックして、[概要] ページを開きます。
  3. [ユーザー] タブを選択します。
  4. ユーザー名が root で、ホスト名が %(any host) であるユーザーがすでにユーザーリストに表示されている場合は、root ユーザーを作成する必要はありません。

    パスワードをリセットするには、その他の操作メニュー その他アイコン から [パスワードを変更] を選択します。

  5. それ以外の場合は、[ユーザー アカウントを作成] をクリックします。
  6. [ユーザー アカウントを作成] ダイアログで、ユーザー名として root を入力し、root の覚えやすい安全なパスワードを入力します。ホスト名は Allow any host(%) の設定のままにします。
  7. [作成] をクリックします。

gcloud

デフォルト ユーザーのパスワードを設定します。

    gcloud sql users set-password root \
        --host=% --instance=[INSTANCE_NAME] --prompt-for-password
    

REST

次のリクエストでは、users:update メソッドを使用して、root ユーザー アカウント('root'@'%')を更新します。

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"name": "root", "password": "[PASSWORD]"}' \
         -X PUT \
         'https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/users?name=root&host=%25'
    

ユーザーの作成

ユーザーを作成するには:

Console

  1. Google Cloud Console の Cloud SQL インスタンス ページに移動します。

    Cloud SQL インスタンス ページに移動

  2. インスタンスを選択して [概要] ページを開きます。
  3. [ユーザー] タブを選択します。
  4. [ユーザー アカウントを作成] をクリックします。
  5. [ユーザー アカウントの作成] ダイアログで以下を指定します。
    • ユーザー名
    • パスワード
    • ホスト(オプション)

      デフォルトは '%' です。これは、ホストリストが制限されていないことを意味します。IP アドレスまたは IP アドレスの範囲を指定することもできます。この場合、これらのアドレスから接続しているユーザーだけがデータベースにアクセスできます。

  6. [作成] をクリックします。

Cloud SQL を使用して作成されたユーザーは、FILESUPER を除くすべての権限を持っています。ユーザーの権限を変更する必要がある場合は、mysql クライアントで GRANT コマンドまたは REVOKE コマンドを使用します。

gcloud

ユーザーを作成します。

    gcloud sql users create [USER_NAME] \
       --host=[HOST] --instance=[INSTANCE_NAME] --password=[PASSWORD]
    

Cloud SQL を使用して作成されたユーザーは、FILESUPER を除くすべての権限を持っています。ユーザーの権限を変更する必要がある場合は、mysql クライアントで GRANT コマンドまたは REVOKE コマンドを使用します。

REST

次のリクエストでは、users:insert メソッドを使用して、ユーザー アカウント('user_name'@'%')を作成します。

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"host": "%", "name": "[USER_NAME]", "password": "[PASSWORD]"}' \
         -X POST \
         https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/users
    

Cloud SQL を使用して作成されたユーザーは、FILESUPER を除くすべての権限を持っています。ユーザーの権限を変更する必要がある場合は、mysql クライアントで GRANT コマンドまたは REVOKE コマンドを使用します。

MySQL クライアント

  1. mysql プロンプトで、ユーザーを作成します。
          CREATE USER '[USER_NAME]'@'%' IDENTIFIED BY '[PASSWORD]';
          
  2. ユーザー テーブルを表示することによって、ユーザーの作成を確認できます。
        SELECT user, host FROM mysql.user;
        
    第 2 世代インスタンスの場合、出力は次の例のようになります。
        +----------+-----------+
        | user     | host      |
        +----------+-----------+
        | root     | %         |
        | newuser  | %         |
        +----------+-----------+
        1 row in set (0.01 sec)
        
  3. GRANT ステートメントでユーザーに権限を付与します。詳細については、MySQL によって提供される権限をご覧ください。
  4. mysql.user テーブルをフラッシュして、変更が反映されていることを確認します。
          FLUSH TABLES mysql.user;
        

ユーザーのパスワードの変更

ユーザーのパスワードを変更するには:

Console

  1. Google Cloud Console の Cloud SQL インスタンス ページに移動します。

    [Cloud SQL インスタンス] ページに移動

  2. インスタンスを選択して [概要] ページを開きます。
  3. [アクセス制御] > [ユーザー] を選択します。
  4. 更新するユーザーのその他アイコン その他アイコン をクリックします。
  5. [パスワードを変更] を選択し、新しいパスワードを指定して、[OK] をクリックします。

gcloud

パスワードを更新します。

    gcloud sql users set-password [USER_NAME] \
       --host=[HOST] --instance=[INSTANCE_NAME] --prompt-for-password
    

REST

次のリクエストでは、users:update メソッドを使用して、ユーザー アカウント user_name'@'%' のパスワードを更新します。ユーザーが別のホストを使用している場合は、その正しいホストで呼び出しを変更する必要があります。

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"name": "[USER_NAME]", "host": "%", "password": "[PASSWORD]"}' \
         -X PUT \
         'https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/users?name=[USER_NAME]&host=%25'
    

MySQL クライアント

  1. mysql プロンプトで、パスワードを変更します。
        SET PASSWORD FOR [USER] = PASSWORD('auth_string');
        
  2. mysql.user テーブルをフラッシュして、変更が反映されていることを確認します。
        FLUSH TABLES mysql.user;
        

ユーザーの更新

ホストや権限などのユーザー プロパティを更新するには、mysql クライアントを使用する必要があります。詳細については、MySQL のドキュメントの MySQL ユーザー アカウント管理をご覧ください。

ユーザーの一覧表示

ユーザーを一覧表示するには:

Console

  1. Google Cloud Console の Cloud SQL インスタンス ページに移動します。

    [Cloud SQL インスタンス] ページに移動

  2. インスタンスを選択して [概要] ページを開きます。
  3. [アクセス制御] > [ユーザー] を選択します。

gcloud

このインスタンスのユーザーを一覧表示します。

    gcloud sql users list --instance=[INSTANCE_NAME]
    

このコマンドのパラメータの完全なリストについては、gcloud sql users list のリファレンス ページをご覧ください。

REST

次のリクエストでは、users:list メソッドを使用して、インスタンスに定義されているユーザーを一覧表示します。

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         -X GET \
         https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/users
    

MySQL クライアント

mysql のプロンプトで、MySQL ユーザーを一覧表示します。

    SELECT user, host FROM mysql.user;
    

root ユーザー アカウントのみが構成されている第 2 世代インスタンスの場合、出力は次の例のようになります。

    +------+-----------+
    | user | host      |
    +------+-----------+
    | root | %         |
    +------+-----------+
    1 row in set (0.01 sec)
    

この例では、ユーザー 'root'@'%' を追加したインスタンスのユーザーが示されています。パスワード フィールドには、パスワードのハッシュが表示されています。

ユーザーの削除

ユーザーを削除するには:

Console

  1. Google Cloud Console の Cloud SQL インスタンス ページに移動します。

    [Cloud SQL インスタンス] ページに移動

  2. インスタンスを選択して [概要] ページを開きます。
  3. [アクセス制御] > [ユーザー] を選択します。
  4. 削除するユーザーのその他アイコン その他アイコン をクリックします。
  5. [削除] を選択し、[OK] をクリックします。

gcloud

ユーザーを削除します。

    gcloud sql users delete [USER_NAME] --host=[HOST] --instance=[INSTANCE_NAME]
    

REST

次のリクエストでは、users:delete メソッドを使用して、ユーザー アカウント user_name'@'%' を削除します。

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"name": "[USER_NAME]", "host": "%"}' \
         -X DELETE \
         'https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/users?host=%25&name=[USER_NAME]'
    

MySQL クライアント

  1. mysql プロンプトで、ユーザーを削除します。
        DROP USER '[USER_NAME]'@'[HOST_NAME]';
        

    DROP USER ステートメントの詳細については、MySQL のドキュメントをご覧ください。

  2. mysql.user テーブルをフラッシュして、変更が反映されていることを確認します。
        FLUSH TABLES mysql.user;
        

次のステップ