Using phpMyAdmin with Cloud SQL on App Engine Standard Environment

Learn how to install phpMyAdmin on Google App Engine standard environment. You can use phpMyAdmin to administer Google Cloud SQL over the web.

You will find this tutorial helpful if you:

  • Run applications on Google App Engine.
  • Use Google Cloud SQL as your database.
  • Use phpMyAdmin as an interface for MySQL or you prefer a web interface for database administration.

If you use Google Compute Engine, consider using one of the development stacks or products available through Click to Deploy. Deployments of stacks that include MySQL, such as LAMP and LEMP, or products such as Drupal, provide an option to install phpMyAdmin as part of the deployment.

Objectives

  • Deploy phpMyAdmin on Google App Engine standard environment.

Costs

This tutorial uses billable components of Cloud Platform, including:

  • Google App Engine
  • Google Cloud SQL

Use the Pricing Calculator to generate a cost estimate based on your projected usage. New Cloud Platform users might be eligible for a free trial.

Before you begin

  1. Sign in to your Google account.

    If you don't already have one, sign up for a new account.

  2. Select or create a Cloud Platform project.

    Go to the Manage resources page

  3. Enable billing for your project.

    Enable billing

  4. Install and initialize the Cloud SDK.
  5. Create a Cloud SQL Second Generation instance.
  6. (Optional) Deploy an App Engine application that uses your Cloud SQL instance or select an existing application.

    For example, create and deploy the guestbook sample. Although you can deploy phpMyAdmin on its own, you'll probably want to use it with an App Engine application in your real-world scenario.

Download the phpMyAdmin source code

You'll deploy phpMyAdmin as a service of your App Engine application, so you must download the source code for phpMyAdmin. Follow these steps:

  1. In a terminal window, enter the following command to download the source code for phpMyAdmin version 4.6.3:

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

    To use a different version of phpMyAdmin, use the links to available versions on the phpMyAdmin Downloads page.

  2. Make a new directory. You will extract the files into this directory.

    mkdir phpMyAdmin
    
  3. Extract the files from the archive into the new directory.

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

Prepare the files for deployment

Deploying phpMyAdmin requires that you create three files: app.yaml, which contains the configuration information for Google App Engine; config.inc.php, which contains the configuration information for phpMyAdmin; and php.ini, which contains application-specific configuration for PHP.

Create app.yaml

The App Engine configuration file specifies how URL paths correspond to request handlers and static files. It also contains information about the application code, such as the application ID and the latest version identifier. Follow these steps to create the file:

  1. In the directory that you created, named phpMyAdmin, create a new file named app.yaml.

    cd phpMyAdmin
    touch app.yaml
    
  2. Using your favorite editor, paste the following text into 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. If you are deploying phpMyAdmin as the first and only application in App Engine, change the value for service from phpmyadmin to default.

    Normally, you would deploy phpMyAdmin as a service of an existing application and provide a name for the service. However, if you haven't yet deployed an application, then you are required to use the service name "default". That's fine for the purposes of this tutorial if you're just trying out phpMyAdmin on App Engine.

    This tutorial works only for App Engine standard environment.

  4. Save the file.

Create config.inc.php

Follow these steps to create the phpMyAdmin configuration file.

  1. Create a new file named config.inc.php.

    touch config.inc.php
    
  2. Using your favorite editor, paste the following text into 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. In your web browser, open the blowfish secret generator.

  4. Copy the unique blowfish secret that the page generated.
    Be careful to copy the generated secret, not the example secret.
  5. Paste the new secret in place of {{your-secret}} in config.inc.php.
  6. Go to the Cloud SQL instances page in the Cloud Platform Console.
  7. Click the Cloud SQL instance to display its Instance details page.
  8. Change the value for $host to use the Instance connection name property.
  9. Save the file.

Create php.ini

In its code, phpMyAdmin uses functions that are disabled by default in Google App Engine. Follow these steps to add a php.ini file so that App Engine enables the functions again:

  1. In the phpMyAdmin directory, create the file.

    touch php.ini
    
  2. Edit the file and add the following line:

    google_app_engine.enable_functions = "php_uname, getmypid"
    

  3. Save the file.

Deploy the application

Use the following commands to deploy your application to Google App Engine.

  1. Check for updates for your gcloud components.

    gcloud components update
    
  2. Deploy the application by running the following command from within the phpMyAdmin directory where your app.yaml file is located:

    gcloud app deploy
    

    This command deploys the app to the phpMyAdmin service, as specified your app.yaml file. Deploying to a separate service helps to ensure that phpMyAdmin runs in the same data center as your main application, which improves performance. To learn more about deploying your app from the command line, see Deploying a PHP App.

Log in to phpMyAdmin

You can now log in to phpMyAdmin. The config.inc.php file that you deployed allowed for logging in without a password. For now, that's how you'll log in, until you set passwords in the next section.

  1. In your web browser, enter the URL for phpMyAdmin to open the welcome page, changing the URL to use your app ID.

        https://phpmyadmin-dot-[YOUR_APP_ID].appspot.com
    
  2. For Username, enter root.

  3. Enter the root password you provided when you configured the root account.

  4. Click Go.

As you develop your App Engine app, remember to password protect any user accounts that you create to access databases in Cloud SQL.

Troubleshooting

App Engine uses the Cloud SQL Proxy to connect to Cloud SQL Second Generation instances. For more information about how the proxy works, see About the Cloud SQL Proxy.

The App Engine logs in the Google Cloud Platform Console can provide information about App Engine errors.

Cleaning up

After you've finished the tutorial doc type template tutorial, you can clean up the resources you created on Google Cloud Platform so you won't be billed for them in the future. The following sections describe how to delete or turn off these resources.

Deleting the project

The easiest way to eliminate billing is to delete the project you created for the tutorial.

To delete the project:

  1. In the Cloud Platform Console, go to the Projects page.

    Go to the Projects page

  2. In the project list, select the project you want to delete and click Delete project. After selecting the checkbox next to the project name, click
      Delete project
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Deleting instances

To delete a Cloud SQL instance:

  1. In the Cloud Platform Console, go to the SQL Instances page.

    Go to the SQL Instances page

  2. Click the name of the SQL instance you want to delete.
  3. Click the Delete button at the top of the page to delete the instance.

What's next

Monitor your resources on the go

Get the Google Cloud Console app to help you manage your projects.

Send feedback about...

Cloud SQL for MySQL