参考:
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 を設置したのと同じディレクトリに、以下のファイルを作成します。
<?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にログインすることが出来なくなりました。