Adminer のインストールから使用まで

Adminer

Adminer という Webアプリケーション があります。データベースを Webブラウザ ベースで操作できるアプリケーションです。phpMyAdmin を代替するものとして作られたそうです。

f:id:gregminster:20161223141902p:plain

しかしながら、MySQL だけでなく、PostgreSQL、SQLite、MS SQL、Oracle、Firebird、SimpleDB、Elasticsearch、MongoDB などもこれ一つで扱うことができます。

構成ファイルも PHP のファイル一つだけのシンプルなものです。日本語にも対応しています。

インストール方法

インストールは簡単です。公式サイトの Download(Downloads)から、Adminer X.X.X (.php, XXX kB)を落として任意の場所に設置すればいいだけです。English Onlyやfor MySQLを銘打ったものがありますが、あえて選ぶ理由はないと思います。

拡張設定

Adminer には「拡張設定」機能があります。「拡張設定」というのはあまり正しい言い方ではないかもしれません。公式ページを見てもらうとわかるのですが、関数やメソッドを自由に利用して独自の拡張ができる、という意味です。

「拡張設定」のサンプルコードは公式ページに記載されているとおりです。「function adminer_object()~class AdminerSoftware extends Adminer~『各メソッドの定義』」という記述の流れです。最後にinclude "/hoge/adminer.php";などのようにダウンロードした PHP ファイルをincludeするのを忘れないようにしてください。

実際に Adminer を利用する場合にアクセスするファイルは、この「拡張設定」で作成したファイルになります。任意の名前を付けて任意の場所に設置して大丈夫です。include場所のミスには気をつけましょう。

SQLite の利用に際しては拡張設定が必須

下記の内容は 2018/10/25 時点では誤りです。こちら の記事を参照して下さい。

SQLite はご存知のとおり、ユーザー名やパスワードといった概念がありません。したがって SQLite を利用する場合は必ず上記の拡張設定を利用する必要があります。function login($login, $password)を(だけを)以下のように設定すればいいでしょう。

<?php
function adminer_object() {
  class AdminerSoftware extends Adminer {
    function login($login, $password) {
      // validate user submitted credentials
      return ($login == 'hogehoge' && $password == 'fugafuga');
    }
  }
  return new AdminerSoftware;
}
include "./adminer.php";

SQLite 以外のサーバにもアクセスする場合はさらに拡張設定を行う

上記の SQLite 用の設定をすればわかると思いますが、例えば SQLite とともに MySQL にもアクセスしたい場合、function login($login, $password)でユーザー名とパスワードの組み合わせを上書きしてしまったので、MySQL のユーザー名とパスワードを送ることができません。

この場合は拡張設定のfunction credentials()を使ってやります。ここに MySQL のアドレス(ポート)とユーザー名、そしてパスワードを書きます。配列なので、複数のデータベースの接続情報を書くことができます。前述のものとあわせたサンプルコードは以下のとおりです。

<?php
function adminer_object() {
  class AdminerSoftware extends Adminer {
    function credentials() {
      // server, username and password for connecting to database
      return array('hostname:port', 'hogohogo', 'fugofugo');

    function login($login, $password) {
      // validate user submitted credentials
      return ($login == 'hogehoge' && $password == 'fugafuga');
    }
  }
  return new AdminerSoftware;
}
include "./adminer.php";

これで、hogehogeとfugafugaで Adminer に一律ログインできます。

軽快でおすすめ

Adminer は PHP のファイルひとつのアプリケーションで、とても扱いやすく軽量、軽快です。拡張機能や「テーマ」もあり(adminer.cssという名前でアプリと同じディレクトリに置けばいいだけです)、応用性も高いです。超大規模なデータベースだとどうなるかは分かりませんが、開発環境や個人レベルの環境では大変便利に使えると思います。