Using phpMyAdmin with Cloud SQL on App Engine Standard Environment

phpMyAdmin を Google App Engine 標準環境にインストールする方法を説明します。phpMyAdmin を使用すると、ウェブから Google Cloud SQL を管理できます。

このチュートリアルは次のような人に参考になります。

  • Google App Engine でアプリケーションを実行する。
  • Google Cloud SQL をデータベースとして使用する。
  • phpMyAdmin を MySQL に対するインターフェースとして使用する、またはウェブ インターフェースをデータベース管理に使いたい。

Google Compute Engine を使用している場合は、開発スタックのいずれか、またはクリック デプロイで入手できる製品を使用することを検討してください。LAMPLEMP などの MySQL を含むスタック、または Drupal などの製品のデプロイでは、デプロイの一部として phpMyAdmin をインストールできます。

目標

  • phpMyAdmin を Google App Engine 標準環境にデプロイします。
  • Cloud SQL にアクセスするためのユーザー パスワードを設定します。

料金

このチュートリアルでは、以下を含む、Cloud Platform の課金対象となるコンポーネントを使用しています。

  • Google App Engine
  • Google Cloud SQL

料金計算ツールを使用すると、想定される利用方法に基づいて費用の見積もりを作成できます。 Cloud Platform を初めて使用するユーザーは無料試用版をご利用いただけます。

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. GCP プロジェクトを選択または作成します。

    [リソースの管理] ページに移動

  3. プロジェクトに対して課金が有効になっていることを確認します。

    課金を有効にする方法について

  4. Cloud SDK をインストールして初期化します。
  5. Cloud SQL インスタンスを作成します。
  6. (省略可)Cloud SQL インスタンスを使用する App Engine アプリケーションをデプロイするか、または既存のアプリケーションを選択します。

    たとえば、ゲストブック サンプルを作成してデプロイします。 phpMyAdmin 単独でデプロイすることもできますが、実際のシナリオでは通常、App Engine アプリケーションと共に使用します。

phpMyAdmin のソースコードをダウンロードする

phpMyAdmin は App Engine アプリケーションのサービスとしてデプロイするので、phpMyAdmin のソースコードをダウンロードする必要があります。手順は次のとおりです。

  1. ターミナル ウィンドウで次のコマンドを入力して、phpMyAdmin バージョン 4.6.3 のソースコードをダウンロードします。

    wget https://files.phpmyadmin.net/phpMyAdmin/4.6.3/phpMyAdmin-4.6.3-all-languages.tar.bz2
    

    別のバージョンの phpMyAdmin を使用するには、phpMyAdmin ダウンロード ページで使用可能なバージョンのリンクを使用してください。

  2. 新しいディレクトリを作成します。後でこのディレクトリにファイルを抽出します。

    mkdir phpMyAdmin
    
  3. 新しいディレクトリにアーカイブからファイルを抽出します。

    tar -xvf phpMyAdmin-4.6.3-all-languages.tar.bz2 -C phpMyAdmin --strip-components=1
    

ファイルのデプロイを準備する

phpMyAdmin をデプロイするには、次の 3 つのファイルを作成する必要があります。app.yaml には、Google App Engine の設定情報を格納します。config.inc.php には、phpMyAdmin の設定情報を格納します。php.ini には、PHP 用のアプリケーション固有の設定を格納します。

app.yaml を作成する

App Engine 設定ファイルでは、URL パスがリクエスト ハンドラと静的ファイルにどのように対応するのかを指定します。また、アプリケーション ID や最新バージョンの ID など、アプリケーション コードについての情報も記載します。ファイルを作成するには次のようにします。

  1. 作成した phpMyAdmin という名前のディレクトリに、app.yaml という名前の新しいファイルを作成します。

    cd phpMyAdmin
    touch app.yaml
    
  2. 適当なエディタを使用して、次のテキストを app.yaml に貼り付けます。

    service: phpmyadmin
    runtime: php55
    api_version: 1
    
    handlers:
    
    - url: /(.+\.(ico|jpg|png|gif))$
      static_files: \1
      upload: (.+\.(ico|jpg|png|gif))$
      application_readable: true
    
    - url: /(.+\.(htm|html|css|js))$
      static_files: \1
      upload: (.+\.(htm|html|css|js))$
      application_readable: true
    
    - url: /(.+\.php)$
      script: \1
      login: admin
    
    - url: /.*
      script: index.php
      login: admin
    

  3. phpMyAdmin が App Engine にデプロイする初めてで唯一のアプリケーションの場合は、service の値を phpmyadmin から default に変更します。

    通常は、phpMyAdmin を既存アプリケーションのサービスとしてデプロイし、サービスの名前を指定します。ただし、アプリケーションをまだデプロイしていない場合は、サービス名として "default" を使用する必要があります。App Engine で phpMyAdmin を試すことだけが目的の場合は、このチュートリアルではこれで十分です。

    このチュートリアルは、App Engine 標準環境でのみ使用できます。

  4. ファイルを保存します。

config.inc.php を作成する

phpMyAdmin 設定ファイルを作成するには次のようにします。

  1. config.inc.php という名前の新しいファイルを作成します。

    touch config.inc.php
    
  2. 適当なエディタを使用して、次のテキストを config.inc.php に貼り付けます。

    <!-- [START all] -->
    <?php
    // [START_EXCLUDE silent]
    /**
     * Copyright 2016 Google Inc.
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *     http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    // [END_EXCLUDE]
    /*
     * This is needed for cookie based authentication to encrypt password in
     * cookie
     * http://www.question-defense.com/tools/phpmyadmin-blowfish-secret-generator
     */
    $cfg['blowfish_secret'] = '{{your_secret}}'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
    
    /*
     * Servers configuration
     */
    $i = 0;
    
    // Change this to use the project and instance that you've created.
    $host = '/cloudsql/{{your_connection_string}}';
    $type = 'socket';
    
    /*
    * First server
    */
    $i++;
    /* Authentication type */
    $cfg['Servers'][$i]['auth_type'] = 'cookie';
    /* Server parameters */
    $cfg['Servers'][$i]['socket'] = $host;
    $cfg['Servers'][$i]['connect_type'] = $type;
    $cfg['Servers'][$i]['compress'] = false;
    /* Select mysql if your server does not have mysqli */
    $cfg['Servers'][$i]['extension'] = 'mysqli';
    $cfg['Servers'][$i]['AllowNoPassword'] = true;
    /*
     * End of servers configuration
     */
    
    /*
     * Directories for saving/loading files from server
     */
    $cfg['UploadDir'] = '';
    $cfg['SaveDir'] = '';
    
    /*
    * Other settings
    */
    $cfg['PmaNoRelation_DisableWarning'] = true;
    $cfg['ExecTimeLimit'] = 60;
    $cfg['CheckConfigurationPermissions'] = false;
    // [END all]
    

  3. ウェブブラウザで、Blowfish Secret Generator を開きます

  4. そのページで生成した一意の Blowfish Secret をコピーします。
    シークレットの例ではなく、生成されたシークレットをコピーするように注意してください。
  5. 新しいシークレットを config.inc.php の {{your-secret}} に貼り付けます。
  6. Cloud Platform Console で Cloud SQL インスタンスのページに移動します。
  7. Cloud SQL インスタンスをクリックして [概要] ページを表示します。
  8. $host の値を、[インスタンス接続名] プロパティを使用するように変更します。
  9. ファイルを保存します。

php.ini を作成する

phpMyAdmin のコードでは、Google App Engine ではデフォルトで無効になっている関数が使用されます。以下の手順に従って php.ini ファイルを追加し、App Engine がこれらの関数を再び有効にするようにします。

  1. phpMyAdmin ディレクトリでファイルを作成します。

    touch php.ini
    
  2. ファイルを編集して次の行を追加します。

    google_app_engine.enable_functions = "php_uname, getmypid"
    

  3. ファイルを保存します。

アプリケーションをデプロイする

次のコマンドを使用して、アプリケーションを Google App Engine にデプロイします。

  1. gcloud コンポーネントの更新を確認します。

    gcloud components update
    
  2. app.yaml ファイルが置かれている phpMyAdmin ディレクトリ内から次のコマンドを実行して、アプリケーションのデプロイを行います。

    gcloud app deploy
    

    このコマンドは、app.yaml ファイルの指定どおりに、アプリを phpMyAdmin サービスにデプロイします。別のサービスとしてデプロイすると、phpMyAdmin はメイン アプリケーションと同じデータセンターで実行されるようになり、パフォーマンスが向上します。コマンドラインからのアプリのデプロイの詳細については、PHP アプリをデプロイするをご覧ください。

phpMyAdmin にログインする

phpMyAdmin にログインできる状態になっています。デプロイした config.inc.php ファイルにより、パスワードなしでログインできます。次のセクションでパスワードを設定するまでは、このログイン方法を使用します。

  1. ウェブブラウザで、phpMyAdmin の URL を入力してウェルカム ページを開きます。実際のアプリ ID を使うように URL を変更してください。

        https://phpmyadmin-dot-[YOUR_APP_ID].appspot.com
    
  2. [Username] には「root」と入力します。

  3. 第 2 世代のインスタンスの場合は、root アカウントを設定するときに指定した root パスワードを入力します。
    第 1 世代のインスタンスの場合は、[Password] は空白のままにします。

  4. [Go] をクリックします。

パスワードを設定する(第 1 世代インスタンスのみ)

Cloud SQL インスタンスをパスワードで保護することが重要です。第 2 世代のインスタンスの場合は、インスタンス作成の一部として root ユーザー アカウントを設定すれば十分です。第 1 世代のインスタンスでは、インスタンスを保護するために追加手順を実行する必要があります。

第 1 世代のインスタンスを作成すると、root ユーザーに対して次の 4 つのホストの組み合わせが作成され、すべてのグローバル権限が付与されます。

  • %
  • 127.0.0.1
  • ::1
  • localhost

最初のホスト(%)は、MySQL コマンドライン クライアントで IP アドレスを使用してデータベースに接続する場合などの、リモート アクセスを表します。このタイプのアクセスに対するパスワードがすでに Google Cloud Platform Console で設定されている場合があります。

他の 3 つのホストは、phpMyAdmin が App Engine からデータベースに接続する場合など、ローカル接続を表すさまざまな方法です。デフォルトでは、localhost またはそのバリエーションによる接続の場合、Cloud SQL ではパスワードは必要ありません。

これまでは、App Engine の外部からは接続できなかったので、パスワードなしのローカル ユーザーとして接続を許可しても問題はありませんでした。しかし、phpMyAdmin をデプロイすると、App Engine アプリケーションから Cloud SQL にウェブ インターフェースが公開されるので、そうはいかなくなります。

以下の手順に従って、root ユーザーのパスワードを追加します。

  1. phpMyAdmin で [ユーザー] タブを選択します。
  2. 最初のユーザー root % の [権限を編集] をクリックします(root % のパスワードをすでに設定してある場合は、代わりに root 127.0.0.1 エントリを編集できます)。
  3. [パスワードを変更] をクリックします。
  4. [パスワード] ボックスと [再入力] ボックスに、パスワードを入力します。
  5. [実行] をクリックします。
  6. 残りの localhost ユーザーに対して以上の手順を繰り返します。

これで、phpMyAdmin を使用して root としてログインするときには、パスワードの入力が必要になります。root % パスワードの設定や変更は Google Cloud Platform Console でいつでも行えますが、そうした設定や変更を行っても localhost の root ユーザーのパスワードは変更されません。Any という名前のユーザーに付与される USAGE という権限は、権限なしと同じなので注意してください。これは適切な設定であり、パスワードを設定する必要はありません。

App Engine アプリをデプロイするときは、忘れずに、Cloud SQL のデータベースにアクセスするために作成するすべてのユーザー アカウントをパスワードで保護してください。

トラブルシューティング

問題が発生した場合は、Google Cloud Platform ConsoleApp Engine ログでエラー メッセージを確認してください。

クリーンアップ

チュートリアル ドキュメント タイプのテンプレートのチュートリアルが終了したら、Google Cloud Platform で作成したリソースについて今後料金が発生しないようにクリーンアップすることができます。次のセクションでは、これらのリソースを削除またはオフにする方法について説明します。

プロジェクトの削除

課金を停止する最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。

プロジェクトを削除する手順は次のとおりです。

  1. GCP Console で [プロジェクト] ページに移動します。

    プロジェクト ページに移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

インスタンスを削除する

Cloud SQL インスタンスを削除するには:

  1. GCP Console の [SQL インスタンス] ページに移動します。

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

  2. 削除したい SQL インスタンスの名前をクリックします。
  3. ページの上部にある、[削除] ボタンをクリックし、インスタンスを削除します。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud SQL ドキュメント