Google Cloud SQLは,GoogleのMySQLデータベースサービスです.AdminerをGoogle Apps Engineにデプロイし.Google Cloud SQLをブラウザーから操作する方法を紹介します.Adminerは1つだけのphpファイルで構成されているために,phpmyadminよりもずっと簡単にディプロイできます.
プロジェクト
GoogleAppEngineLauncherなどを使ってプロジェクト<Project ID>を作成します.
Adminerの公式サイトから.Adminer 4.2.0 for MySQLをダウンロードします.ついでに好きなスタイルシートをダウンロードします.adminer-4.2.0-mysql-en.phpをadminer.phpにリネームし,プロジェクトは以下のようになります.
- adminer.css
- adminer.php
- app.yaml
- favicon.ico
app.yaml
application: <Project ID>
version: 1
runtime: php
api_version: 1
threadsafe: yes
handlers:
- url: /favicon\.ico
static_files: favicon.ico
upload: favicon\.ico
- url: .*
script: adminer.php
secure: always
Google App Engine
Google Developer Consoleにログインし,プロジェクトを開きます.
接続したいGoogle Cloud SQLインスタンスを開きます.
OverviewのEditをクリックします.
Cloud SQL instance ID を確認し,Regionがプロジェクトと同一であること,preffered locationがFollow App Engine App,App engine APP IDが接続したいCloud SQLを含むプロジェクトになっていることを確認します.
Access Controlを開きます.IP AddressとSet Root PasswordはIPv4を使って外部のSQL Clientから接続するのに使うので,今は使いません.
RootのパスワードをSet Root Passwordで強固なものにしておきます.
Authorized App Engine ApplicationにAdminerのProject IDを追加しておきます.
ログイン
ブラウザから,https: //<project id>.appspot.comにアクセスすると,間違いがなければ以下のようにログイン画面が表示されます.Server名が難しいので注意してください.コロンから始めます.
- System: MySQL
- Server: ":/cloudsql/<project id>:<SQL instance ID>"
- Username: root
- Password: (blank)
- Database: (blank)
ログインできました.
データベースも簡単に操作できます.
エラー
php_network_getaddresses: gethostbyname failed. errno=0
Server名が間違っています. ":/cloudsql/<project id>:<SQL instance ID>"
MySQL server has gone away
Authorized App Engine Applicationsの登録,Cloud SQL Instanceが起動しているのか,Regionが同一かを確認してください.
データベースのインポート
Google Apps Engine上で動作するAdminerでは,データベースファイル(.sql)のアップロード&インポートができないので,別の方法を使います.Google Developer ConsoleのCloud SQLの画面にImport 画面があるので,データベースファイルをCloud Strageに一度アップロードしてから,そのパスを指定します.