みーのぺーじ

みーが趣味でやっているPCやソフトウェアについて.Python, Javascript, Processing, Unityなど.

Google App EngineでAdminerを使ってGoogle Cloud SQLを操作する

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にログインし,プロジェクトを開きます.

f:id:atsuhiro-me:20151104005428p:plain:w300

接続したいGoogle Cloud SQLインスタンスを開きます.

f:id:atsuhiro-me:20151104005430p:plain:w300

OverviewのEditをクリックします.

f:id:atsuhiro-me:20151104005432p:plain:w300

Cloud SQL instance ID を確認し,Regionがプロジェクトと同一であること,preffered locationがFollow App Engine App,App engine APP IDが接続したいCloud SQLを含むプロジェクトになっていることを確認します.

f:id:atsuhiro-me:20151104005434p:plain:w300

Access Controlを開きます.IP AddressとSet Root PasswordはIPv4を使って外部のSQL Clientから接続するのに使うので,今は使いません.

RootのパスワードをSet Root Passwordで強固なものにしておきます.

Authorized App Engine ApplicationにAdminerのProject IDを追加しておきます.

f:id:atsuhiro-me:20151104005437p:plain:w300

ログイン

ブラウザから,https: //<project id>.appspot.comにアクセスすると,間違いがなければ以下のようにログイン画面が表示されます.Server名が難しいので注意してください.コロンから始めます.

  • System: MySQL
  • Server: ":/cloudsql/<project id>:<SQL instance ID>"
  • Username: root
  • Password: (blank)
  • Database: (blank)

f:id:atsuhiro-me:20151104005440p:plain:w300

ログインできました.

f:id:atsuhiro-me:20151104005443p:plain:w300

データベースも簡単に操作できます.

f:id:atsuhiro-me:20151104005446p:plain:w300

エラー

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に一度アップロードしてから,そのパスを指定します.