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


投稿日:2012年12月11日
  • 12
  • 0



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をインストールする方法」を解説します。


現在のページを共有する



現在のページに関連する記事

phpMyAdminのバージョンアップに合わせて、初期設定と拡張機能の有効化 MySQLのインストールと各種設定、phpMyAdminのインストールと設定
phpMyAdminのバージョンアップに合わせて、初期設定と拡張機能の有効化 外部リポジトリの追加と、yum-prioritiesを利用した優先順位の設定
phpMyAdminのバージョンアップに合わせて、初期設定と拡張機能の有効化 GMO VPSを契約してWordPressを安定動作させるまでのサーバ設定方法
phpMyAdminのバージョンアップに合わせて、初期設定と拡張機能の有効化 CentOS5.9のMySQLを5.6.14にアップデートする方法
phpMyAdminのバージョンアップに合わせて、初期設定と拡張機能の有効化 yumコマンドで外部リポジトリを指定して、最新のPHPにバージョンアップ
phpMyAdminのバージョンアップに合わせて、初期設定と拡張機能の有効化 目を見張るスピードで進化を続けるMySQLのバージョンアップと初期設定
phpMyAdminのバージョンアップに合わせて、初期設定と拡張機能の有効化 構築したLAMP環境にWordPressをインストールする方法

おすすめの記事

初めてでも理解できるようになる「Google Chrome機能拡張の開発」

初めてでも理解できるようになる「Google Chrome機能拡張の開発」

本気で作りたい人向け、WordPressプラグインの作成方法

本気で作りたい人向け、WordPressプラグインの作成方法

DNS Amp攻撃の解説と、踏み台にされないためのBIND DNSの設定

DNS Amp攻撃の解説と、踏み台にされないためのBIND DNSの設定

標準のアンインストーラーで消えないソフトを徹底的に削除する方法

標準のアンインストーラーで消えないソフトを徹底的に削除する…

WordPressのサイトをHTTPS化して学ぶLet’s Encryptの使い方

WordPressのサイトをHTTPS化して学ぶLet’s Encryptの使い方

Question2AnswerへreCAPTCHAを導入する方法

Question2AnswerへreCAPTCHAを導入する方法

ads.txtの設置方法を通して学ぶインターネット広告の問題点

ads.txtの設置方法を通して学ぶインターネット広告の問題点

5段階評価プラグインを通して学ぶPukiWikiのプラグインを作成する方法

5段階評価プラグインを通して学ぶPukiWikiのプラグインを作成す…


いただいたコメントなど

  1. 名無し のコメント:

    はじめまして。私Mysqlなど勉強中なものでさっぱり分かりませんでしたが、大変助かりました。
    ありがとうございました。

    • oxy のコメント:

      コメントありがとうございます。
      初めて設定する方でも分かるように作成した記事なので、お役に立てて何よりです。

名無し へ返信する コメントをキャンセル

コメントは認証制のため、すぐには反映されません。

プログラミングに関する質問は「日本語でプログラミングの悩みを解決するQ&Aサイト sukegra」をご利用ください。