OXY NOTES

phpMyAdminのバージョンアップに合わせて、初期設定と拡張機能の有効化

phpMyAdminのバージョンアップ

MySQLの補助ツールphpMyAdmin。わかりにくいデータベースの操作を、視覚的に扱うことができます。
便利なphpMyAdminですが、脆弱性を利用したハッキングが目立つため、特別理由がない限り最新バージョンをインストールするか、使わないのであればアンインストールすることをお勧めします。


phpMyAdminのインストール

まずはインストールされているかチェックします。

# rpm -qa | grep phpMyAdmin

何も表示されなければインストールされていません。

続けて外部リポジトリに最新版があるかチェックします。

# yum list --enablerepo=remi,epel,ius | grep phpMyAdmin
phpMyAdmin.noarch                      2.11.11.3-2.el5            epel
phpMyAdmin3.noarch                     3.5.2.2-1.el5              epel

パッケージがあるようなのでインストールします。

# yum install --enablerepo=remi,epel,ius phpMyAdmin
Loaded plugins: downloadonly, fastestmirror, priorities
Loading mirror speeds from cached hostfile
 * addons: mirror.centos.org
 * base: www.ftp.ne.jp
 * contrib: mirror.centos.org
 * epel: ftp.iij.ad.jp
 * epel-debuginfo: ftp.iij.ad.jp
 * epel-source: ftp.iij.ad.jp
 * extras: www.ftp.ne.jp
 * ius: mirror.sothatswhy.org.uk
 * remi: iut-info.univ-reims.fr
 * updates: www.ftp.ne.jp
0 packages excluded due to repository priority protections
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package phpMyAdmin.noarch 0:3.5.2.2-1.el5.remi.1 set to be updated
--> Processing Dependency: php-php-gettext for package: phpMyAdmin
--> Running transaction check
---> Package php-php-gettext.noarch 0:1.0.11-4.el5.remi set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package               Arch         Version                    Repository  Size
================================================================================
Installing:
 phpMyAdmin            noarch       3.5.2.2-1.el5.remi.1       remi       6.4 M
Installing for dependencies:
 php-php-gettext       noarch       1.0.11-4.el5.remi          remi        20 k

Transaction Summary
================================================================================
Install       2 Package(s)
Upgrade       0 Package(s)

Total download size: 6.4 M
Is this ok [y/N]: y ←インストールをしていいかYES/NOと聞かれるので「y」と入力してEnter
Downloading Packages:
(1/2): php-php-gettext-1.0.11-4.el5.remi.noarch.rpm      |  20 kB     00:00
(2/2): phpMyAdmin-3.5.2.2-1.el5.remi.1.noarch.rpm        | 6.4 MB     00:06
--------------------------------------------------------------------------------
Total                                           788 kB/s | 6.4 MB     00:08
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : php-php-gettext                                          1/2
  Installing     : phpMyAdmin                                               2/2

Installed:
  phpMyAdmin.noarch 0:3.5.2.2-1.el5.remi.1

Dependency Installed:
  php-php-gettext.noarch 0:1.0.11-4.el5.remi

Complete!

インストールが終了しました。

phpMyAdminはインストール時にApache用の設定ファイルも自動でインストールしてくれます。

通常Apache用の設定ファイルが「/etc/httpd/conf.d/phpmyadmin.conf」。本体のファイルが「/usr/share/phpMyAdmin/」に保存されています。


Apache用設定ファイル「phpmyadmin.conf」の設定

Apache用設定ファイル「phpmyadmin.conf」を編集していきます。

# vi /etc/httpd/conf.d/phpmyadmin.conf

8行目あたり、エイリアスの設定をします。
スペースで区切られたフィールドにそれぞれ「Alias、phpMyAdminのURL、phpMyAdminの保存ディレクトリ」を指定します。
この設定で「http:example.com/phpmyadmin」と「http:example.com/phpMyAdmin」でアクセスした場合は「/usr/share/phpMyAdmin」を参照します。

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

11行目あたりにある、「<Directory /usr/share/phpMyAdmin/>」というApacheの2.2と2.4でモジュールの動作を制御している部分ですが、ローカルからのアクセスしか認めない設定になっています。
リモートから操作するため、この部分をコメントアウトします。

# <Directory /usr/share/phpMyAdmin/>
#    <IfModule mod_authz_core.c>
#      # Apache 2.4
#      Require local
#    </IfModule>
#    <IfModule !mod_authz_core.c>
#      # Apache 2.2
#      Order Deny,Allow
#      Deny from All
#      Allow from 127.0.0.1
#      Allow from ::1
#    </IfModule>
# </Directory>

このあとに続く「<Directory /usr/share/phpMyAdmin/setup/>」はコメントアウトしないように注意してください。「setupディレクトリ」の脆弱性を突いた攻撃に晒されることになります。
特にバージョンの古いphpMyAdminをインストールしている場合は注意してください。

以上でApache用設定ファイルの編集は終了です。
Apacheを再起動して設定を有効にします。

# /etc/rc.d/init.d/httpd restart

http://example.com/phpMyAdmin/」へアクセスしてみてください。phpMyAdminのログイン画面が表示されると思います。


phpMyAdmin環境保管領域の設定

ログインすると以下のアラートが表示されていると思います。
phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています。理由についてはこちらをご覧ください。

これはphpMyAdminの公式ページのドキュメントにあるように、「phpMyAdminの新機能(ブックマーク、コメント、全体のセットのためのSQL履歴、追跡メカニズム、 PDFの世代、列の内容の変換など)」を利用するための、特別なテーブルのセットを作成してください。とのことです。

インストールした時点で、この設定を行うためのSQLコマンドがあらかじめ用意されています。
/usr/share/phpMyAdmin/examples」にある「create_tables.sql」がそれです。ディレクトリはインストールした場所に適宜読み替えてください。

新機能に必要なテーブルと専用ユーザーの作成

ターミナルエミュレータを利用してSQLにログインし、用意された「create_tables.sql」を実行します。

# mysql -u root -p
Enter password: ←SQLのrootユーザー用パスワードの入力

MySQLでスクリプトを実行します。

mysql> source /usr/share/phpMyAdmin/examples/create_tables.sql

Query OK, 1 row affected (0.00 sec)

Database changed
Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

確認します。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| phpmyadmin         |
+--------------------+
4 rows in set (0.00 sec)

上記のように「phpmyadmin」というデータベースが作成されていれば成功です。

phpmyadminの管理権限ユーザーを作成

続いて作成したデータベースを管理する権限を持つユーザーを作成します。後に編集する設定ファイルのサンプルに合わせてユーザー名を「pma」にします。パスワード(pma_pass)は自由に変更してください。

mysql> GRANT ALL PRIVILEGES *.* TO pma@localhost IDENTIFIED BY 'pma_pass';

追記
バージョンが「4.1.9-1.el5.remi」では以下の書式になっています。

mysql> GRANT ALL PRIVILEGES ON phpmyadmin.* TO pma@localhost IDENTIFIED BY 'pma_pass'

権限に関するテーブルを再読み込みします。

mysql> FLUSH PRIVILEGES;

MySQLから抜けてください。

mysql> exit

これで「phpmyadmin」を管理する「pma」というユーザーが作成できました。

設定ファイルの編集

まずはphpMyAdminディレクトリにあるサンプルファイルを、「/etc/phpMyAdmin」へコピーします。

# cp /usr/share/phpMyAdmin/config.sample.inc.php /etc/phpMyAdmin/

ディレクトリを移動して

# cd /etc/phpMyAdmin/

/etc/phpMyAdmin/」ディレクトリに既に「config.inc.php」がある場合はファイル名を変更してバックアップします。

# mv /etc/phpMyAdmin/config.inc.php /etc/phpMyAdmin/config.inc.php.org

続いてコピーした「config.sample.inc.php」をリネーム

# mv config.sample.inc.php config.inc.php

設定ファイルを編集します。

# vi /etc/phpMyAdmin/config.inc.php

基本は39行目あたりに用意されているコメントアウトを削除するだけです。「pmapass」の部分だけ自分で設定したパスワードに変更してください。

各設定の詳しい意味を追いたい方は「公式ページ」をご覧ください。

/*
 * phpMyAdmin configuration storage settings.
 */

/* User used to manipulate with storage */
$cfg['Servers'][$i]['controlhost'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'pma_pass';

/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$i]['history'] = 'pma_history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma_table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma_tracking';
$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
$cfg['Servers'][$i]['userconfig'] = 'pma_userconfig';
$cfg['Servers'][$i]['recent'] = 'pma_recent';
/* Contrib / Swekey authentication */
// $cfg['Servers'][$i]['auth_swekey_config'] = '/etc/swekey-pma.conf';

これで設定は終了です。

再度「http://example.com/phpMyAdmin/」へアクセスして、ログアウト後にログインしなおしてください。
phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています。理由についてはこちらをご覧ください。
というアラートが消えています。


ログイン画面から先に進まない場合の対処法

ログイン画面で正しいユーザーとパスワードを入力してもログインできない場合の対処法です。

/var/lib/php/session」ディレクトリに、Apacheプロセスの実行ユーザーがアクセスできるようにします。当サイトでは以前の投稿で実行ユーザーを「www」にしました。

まずは確認
# cd /var/lib/php/
# ls -l
drwxrwx--- 2 root apache 4096 … session
グループがapacheになっているのでwwwにします。
# chgrp www session

これで再度ログインしてみてください。

あまりおすすめしませんが、以下のコマンドなら実行ユーザーが誰でもログインできるようになるので手間なしです。

# chmod 777 /var/lib/php/session

その他のアラート

phpMyAdminにログインすると以下のアラートが表示されることがあります。
お使いになっている PHP の MySQL ライブラリのバージョン 5.0.96 が MySQL サーバのバージョン 5.5.28 と異なります。これは予期しない不具合を起こす可能性があります。

これは読んで字の如く、PHPのMySQLライブラリのバージョンが低いために出るアラートです。しかし最新版のはずのphp54-mysqlmysqlclientをインストールしても表記は変わらず。

現状で特に問題が起きているわけではないので放置。(というよりお手上げ。解決策をご存知の方はコメントやフォームにて教えていただけると助かります)

追記

単純にyumでインストールする際に公式のものが優先されてバージョンの整合性が取れなくなっただけでした。一連のパッケージをインストールする際、remiリポジトリを有効にするだけでなく、公式のリポジトリを無効にしてインストールすれば整合性の取れたパッケージが自動でインストールされます。


以上でphpMyAdminのバージョンアップが完了です。
これで最新版のWordPressを動作させる環境が整いました。次は「構築したLAMP環境にWordPressをインストールする方法」を解説します。