.
WEB/DB 関連 => phpMyAdmin > 3.phpMyAdmin-2.9.x 認証タイプ別 設定 (config.inc.php)
Linux 活用ガイド:目次

サーバ構築ガイド

レンタル ガイド

ショップ 構築ガイド

情報漏洩対策

phpMyAdmin-2.9.x 認証タイプ別 設定 (config.inc.php)

phpMyAdmin の認証タイプには三種類用意されています。config 認証は論外として、Cookie 認証 と http 認証の二通りの設定を説明します。

セキュリティ面では、ブラウザにパスワードを記憶させないのであれば、http 認証 + こちらの Apache MySQL 管理者用ポリシ がお勧めです。(サーバ管理者専用)

複数のローカルクライアントに 管理者が設置したphpMyAdmin を提供するのであれば、Cookie 認証 + Apache 一般ユーザー用ポリシ がお勧めです。(ローカルユーザで共有)

phpMyAdmin の設定

phpMyAdmin の設定は config.inc.php で行います。サンプルファイル config.sample.inc.php にありますので参考に指定ください。 cfg 指定の意味は付属のドキュメントに説明があります。

Cookie 認証を行う場合 ~ config.inc.php.

cookie認証

Cookie 認証でアクセスした場合、左のようなログインページが表示されます。MySQL アカウントを入力すれば、そのユーザの MySQL 管理画面が表示されます。

Cookie 認証の特徴についてはこちらで説明しています。

/data/phpMyAdmin/config.inc.php

<?php
$i = 0;
$i++;
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['blowfish_secret'] = '任意のBlowfish暗号化パスフレーズ';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';
$cfg['LoginCookieValidity'] = '1800';
$cfg['Servers'][$i]['AllowDeny']['order'] = 'deny,allow';
$cfg['Servers'][$i]['AllowDeny']['rules'] = array('deny % from all','allow % from 192.168.1.0/24');

?>

以下、上記設定の内容です。この他にも多くの指定が行えます。付属のドキュメントを参照して下さい。日本語訳はこちらにあります。

  • $cfg['blowfish_secret'] =
    • blowfish は、強固な秘密鍵暗号化のことです。暗号化に必要となる任意のパスフレーズを記述します。cookie 認証を使用する場合は必須です。
  • $cfg['Servers'][$i]['host'] =
    • MySQL データベースサーバを指定します。phpMyAdmin と同居する場合は、localhost と指定します。
  • $cfg['Servers'][$i]['extension'] =
    • MySQL の拡張子を指定します。CentOS 4.4 では MySQL-4.1.x / PHP-4.x なので拡張子は mysql としました。 PHP5.x 環境の場合、新たにサポートされた拡張エクステンションmysqli を指定する事も出来ます。
  • $cfg['Servers'][$i]['connect_type'] =
    • MySQL サーバとの接続方式を指定します。socket 又は TCP で指定します。この指定がない場合は TCP で接続します。通常は TCP です。
  • $cfg['Servers'][$i]['compress'] =
    • MySQL との通信に圧縮されたプロトコルを使用します。PHP4.3 以降である必要があります。
  • $cfg['Servers'][$i]['user'] = '';
    $cfg['Servers'][$i]['password'] = '';
    • config 認証を行う場合、ユーザ名、パスワードを指定します。Cookie 認証を行う場合は空欄にします。
  • $cfg['LoginCookieValidity'] = '1800';
    • Cookie 認証を行う場合、Cookie の賞味期限を秒で指定します。
  • $cfg['Servers'][$i]['AllowDeny']['order'] = 'deny,allow';
    • 評価順を指定します。上記例では全てのIPアドレスの接続を拒否(deny)し、許可されたIP アドレスのみを許可(allow)します。
  • $cfg['Servers'][$i]['AllowDeny']['rules'] = array('deny % from all','allow % from 192.168.1.0/24');
    • 上記 order の ルールを指定します。この例では、全てを禁止し、192.168.1.0/24 からの接続を許可しています。

Web サーバに管理権限がある場合は、config.inc.php の$cfg['Servers'][$i]['AllowDeny']['order'] と $cfg['Servers'][$i]['AllowDeny']['rules'] によるアクセス制限は行わず、Apache 側で設定するようにした方が間違いありません。

http 認証を行う場合 ~ config.inc.php.

http 認証

http 認証を行う場合は、以下のように指定します。この場合、Apache が認証を求めますが、求められるユーザー名とパスワードは、MySQL アカウントになります。

認証に成功した場合、そのユーザの MySQL 管理画面が表示されます。

/data/phpMyAdmin/config.inc.php

<?php
$i = 0;
$i++;
$cfg['Servers'][$i]['auth_type'] = 'http';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['AllowDeny']['order']= 'deny,allow';
$cfg['Servers'][$i]['AllowDeny']['rules']= array('deny % from all','allow % from 192.168.1.0/24');

?>

その他 上手く接続できない場合

バーチャルホストを構築している環境などで phpMyAdmin が上手く URL を見つけられない場合、フルパスで指定します。 2.3.x 以降は、この指定は必要ないようです。

$cfg['PmaAbsoluteUri'] = 'https://www.mydomain/phpMyAdmin/';

Shift_JIS でログインできない

phpMyAdmin を shift_jis を利用する場合、エラーが発生して phpMyAdmin を使用することが出来ません。japanese-sjis.inc.php の修正が必要になります。

Shift JIS は、特定の文字で16進数に変換する際、PHP や CGI のプログラム表記とバッティングするためエラーが発生します。 この対策はとられていません。

該当文字に、表 / 十 / 申 / 予 / 能 / ソ などがありますが、japanese-sjis.inc.php には、 の文字が含まれています。テキストエディタ当で適当な文字に置き換える事で解決します。

phpMyAdmin で指定する文字コードと、データベースの文字コードが異なる場合、文字化けを起こすことになります。

Apache 側でのセキュリティ対策

IP アドレスなどのアクセス制限は、phpMyAdmin 側で行うよりも Apache 側で行った方が確実です。

インターネット側からアクセスする必要がある場合は、MySQL データベースへの接続は、phpMyAdmin (Webサーバ)が行っていても データベースの内容、アクセスコードは http を使ってインターネットを流れることになります。

データベースの中身によっては SSL による通信経路の暗号化は必須となります。 Apache 側でSSLクライアント認証を導入すれば、総当り攻撃にも対応できます。

参照 => Apache2-SSLを有効にするには
ディレクティブ設定例 => 公開ディレクトリを新設する

ログ監視ツール Swatch 側でも phpMyAdmin に関するログは監視するようにします。

phpMyAdmin の利用事例

phpMyAdmin の簡単な利用例は以下で紹介しています。MySQL データベースを必要とする CMS 設置のために、phpMyAdmin を使用して用意する例です。

参照 => ユーザー参加型高機能フォーラム phpBB2 を導入する

phpMyAdmin 導入


PHP に関する書籍案内


MySQL に関する書籍案内

bottom_mark
ページ最上部
ページ最上部 前のページ