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-mysqlやmysqlclientをインストールしても表記は変わらず。
現状で特に問題が起きているわけではないので放置。(というよりお手上げ。解決策をご存知の方はコメントやフォームにて教えていただけると助かります)
追記
単純にyumでインストールする際に公式のものが優先されてバージョンの整合性が取れなくなっただけでした。一連のパッケージをインストールする際、remiリポジトリを有効にするだけでなく、公式のリポジトリを無効にしてインストールすれば整合性の取れたパッケージが自動でインストールされます。
以上でphpMyAdminのバージョンアップが完了です。
これで最新版のWordPressを動作させる環境が整いました。次は「構築したLAMP環境にWordPressをインストールする方法」を解説します。
はじめまして。私Mysqlなど勉強中なものでさっぱり分かりませんでしたが、大変助かりました。
ありがとうございました。
コメントありがとうございます。
初めて設定する方でも分かるように作成した記事なので、お役に立てて何よりです。