Posted at

Adminerでお手軽DB管理&アクセス制御

More than 5 years have passed since last update.

参考:

http://www.adminer.org/

http://www.adminer.org/en/extension/


Adminerとは?

AdminerはphpMyAdminのようにブラウザからデータベースを管理するツール。

しかし、AdminerはPHP1ファイルのみで構成されていてとてもお手軽。

さらにMySQL以外のデータベースにも対応していて、何より高速に動作する。


Adminer本体の設置


ドキュメントルートなどに以下のファイルを設置

adminer-3.7.1-mysql.php


実際に使ってみる

後はブラウザで該当ファイルにアクセスするだけで動作する。

ログイン画面で、アクセスするデータベースのユーザ名などが求められる。


IPアドレスでアクセス制御

さすがにドキュメントルートにこんな危ないものは置けないぜ、というのは当然の反応。

そこで、Adminerは簡単に自分自身を拡張できるようになっています。

今回はログイン時にアクセスしてきたユーザのIPアドレスをチェックし、許可したIPアドレス以外はログイン出来ないようにしてみます。

上記の adminer-3.7.1-mysql.php を設置したのと同じディレクトリに、以下のファイルを作成します。


adminer_ext.php

<?php

function adminer_object() {
class AdminerSoftware extends Adminer {
function login($login, $password) {
$whiteList = array(
// ココに、アクセスを許可するIPアドレスを羅列する
"xxx.xxx.xxx.xxx",
"yyy.yyy.yyy.yyy"
);

$remoteIP = $_SERVER["REMOTE_ADDR"];
if(in_array($remoteIP, $whiteList) === true ) {
return true;
} else {
return false;
}
}
}
return new AdminerSoftware;
}


Adminerは自分と同じディレクトリに adminer_ext.php が存在すればそれを自動的にrequireします。

その中でAdminerのもっているメソッドををオーバライドできます。(今回はloginメソッドをオーバライド)

これで許可されたIPから以外はAdminerにログインすることが出来なくなりました。