mrs.suzu841.com 管理人の四方山(よもやま) tips



  CentOS5.7 Dagリボジトリと phpMyAdmin      2012年2月29日(水)



edit.gif 1. phpmyadmin とは

phpmyadmin は MySQL を web インタフェース上から制御するための PHP による統合ツールです。 MySQL を制御するには一般にコマンドラインから mysqladmin コマンドまたは mysql コマンドを使いますが、 直感的にわかりやすいものではないため、私のような初心者には苦手なもののひとつです。 この点 phpmyadmin のインタフェースは、データベースの構造やテーブルの構成がビジュアルに表示されるため、 入門用のみならずメンテナンス上も利点が大きいのではないかと思います。
ここでは CentOS5 系の環境で簡易に phpmyadmin を導入するため、 yum を使って dag のリポジトリから phpmyadmin をインストールする方法について記してみようと思います。



edit.gif 2. dag リポジトリの設定

dag のリポジトリは本家以外にも広く公開されているので、 ここでは本家の負荷上昇を避けるため riken のミラーリポジトリを利用することを前提とします。 また、yum リポジトリの追加は別ファイルを作るのではなく、CentOS-Base.repo に dag を追加し、 enabled=0 としてデフォルトとの競合を避け、gpgcheck=1 とし、パッケージ検証を行うものとします。



 # vi /etc/yum.repos.d/CentOS-Base.repo


以下の設定を追加


[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://ftp.riken.jp/Linux/dag/redhat/el$releasever/en/$basearch/dag/
gpgcheck=1
enabled=0


続いて GPGKEY をインストール。
GPGKEY はパッケージが正当なリポジトリからダウンロードされているか検証するための暗号キーであり、 RPM コマンドでインポートします。これによってインストール時に自動的にパッケージの検証が行われるようになります。

下記で wget した RPM-GPG-KEY.dag.txt は、/etc/pki/rpm-gpg/ に置き、rpm --import にて dag の GPGKEY をインポートします。


 # wget http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt

 # rpm --import RPM-GPG-KEY.dag.txt


edit.gif 3. phpMyAdmin のインストール

phpmyadmin はその名前のとおり php によるパッケージであるため、 動作用件となる php モジュールを事前にそろえる必要があります。
必要なパッケージは php-mysql php-mcrypt php-mbstring でそれぞれ mysql 制御用モジュール、 暗号化モジュール、マルチバイト対応モジュールです。
これらは標準のリポジトリからダウンロードできるので、以下の yum コマンドで導入します。


 # yum -y install php-mysql php-mcrypt php-mbstring


なお、yum コマンドではすでに導入されているパッケージは、 導入済である旨が表示されるので、複数のパッケージを並列して指定でき、依存性を自動的に解決してくれるため、 上記以外のパッケージに依存性があった場合は、そのパッケージも導入されます。
システム任せになるのが望ましくない場合は -y を外して実行すると、対話的に操作することができます。

必要なパッケージをインストールしたら、以下のように --enablerepo=dag として、 一時的に dag のリポジトリを有効にし、phpmyadmin 本体を導入します。


 # yum -y install --enablerepo=dag phpmyadmin


yum によるパッケージインストール後、ダウンロードしたパッケージは自動的に削除されることはなく、 /var/cache/yum 配下に rpm パッケージが残っているので、放置すると次第に容量を圧迫することがあります。 目的のパッケージが問題なく導入でき、ダウンロードしたパッケージを削除したい時には以下のコマンドを用います。


 # yum clean packages



edit.gif 4. phpmyadmin の初期設定

phpmyadmin は内部的にパスワードを必要とし、通常は cookie を使用して認証を行います。 設定は config.inc.php で行いますが、dag の rpm パッケージでは同ファイルは /usr/share/phpmyadmin/config.inc.php として配置されています。 このファイル中に blowfish_secret というパラメータがあるのでこの部分に cookie auth 用のパスワードを記入します。


 # vi /usr/share/phpmyadmin/config.inc.php

以下修正行


$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

以下の様に修正
$cfg['blowfish_secret'] = 'ここへ何か文字列( パスワード )を記入'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */


なお、ここで設定したパスワードはあくまで phpmyadmin が内部的に使用するパスワードであるため、 ユーザ認証用に使うことはありません。また、config.inc.php には auth_type を指定する項目があり、 デフォルトでは cookie となっているはずですが、念のために確認しておくとよいかもしれません。


$cfg['Servers'][$i]['auth_type'] = 'cookie';   ← こうなっていることを確認する



edit.gif 5. apache との連携

phpmyadmin は apache 上の php コンテンツとして動作するので、mod_php が登録されている必要があります。 CentOS5 では php をインストールするとデフォルトで追加されはずですが、 念のため /etc/httpd/conf.d/php.conf が存在するかどうか確認しておくことをおすすめします。 php.conf では php4 および php5 のモジュール設定およびハンドラの設定がされているので、特に設定追加の必要はありません。

ただし、dag の phpmyadmin パッケージではコンテンツ本体が /usr/share/phpmyadmin 配下に設置されるので、 このディレクトリにアクセスできるよう httpd.conf での追加設定が必要です。 これは通常の Alias の設定で事足りると思いますが、必ずローカルネットワーク以外のアクセスを禁止しておくこと。 phpmyadmin にはこれまでいくつかの脆弱性が確認されており、また PHP そのものの脆弱性の影響を受けるため、 アクセス制御は確実に行う必要があります。

なお、ここではディレクトリエイリアスを msqlctrl としましたが、phpmyadmin の直接記名は避けましょう。 これは phpmyadmin の脆弱性を叩くスクリプトがアンダーグラウンドで出回っており、標準のパス名が決め打ちでアタックされるためです。 また、可能であれば apache 側でもログイン認証を設けたり、SSLrequireSSL にてコンテンツの暗号化を強制しておくとよいと思います。


以下、httpd.conf への最も単純な設定事項を記載。


# -----------------------------------------------------
# Alias for phpmyadmin:
#
# 内部参照用コンテンツ /msqlctl は、ローカルからのみの
# アクセス許可を行い、認証はなし
# -----------------------------------------------------

Alias /msqlctrl "/usr/share/phpmyadmin"

<Directory "/usr/share/phpmyadmin">
AllowOverride None
Options ExecCGI FollowSymLinks Indexes

Order deny,allow
Deny from all
Allow from 192.168.0. 127.0.0.1
</Directory>


apache の設定ができたら、以下のコマンドで文法をチェック。


 # httpd -t


文法に問題がなければ、以下のコマンドで apache に設定を読み込ませ、mysqld を起動させます。


 # service mysqld start

 # service httpd reload

すべて正しく動作していれば、これでブラウザで表示確認ができるはず・・・・・ですが?

phpmyadminとdagリポジトリ

なお、phpMyAdmin については http://mrs.suzu841.com/tebiki/centos55/phpmyadmin.htmlにも記事がありますので、よろしかったらご覧ください。