phpMyAdmin最新版を手動インストール

f:id:nani-sore:20150303145051p:plain

 

yumでインストールできるphpMyAdminは少し古いバージョンなので手動でインストール (^_^)

 

★使用OS

# cat /etc/issue
CentOS release 6.6 (Final)

 

★pypMyAdminをインストールする場所に移動

今回は例として /var/www/ の下にインストールします。
yumでインストールした場合は /usr/share/phpMyAdminになります。

# cd /var/www/ 

 

phpMyAdmin の公式ページから最新版をダウンロード

公式ページ :phpMyAdmin - Download

2015/03/05現在の最新版は、2015/03/04 リリースの4.3.11.1。

# wget http://sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/4.3.11.1/phpMyAdmin-4.3.11.1-all-languages.tar.gz

 

★ダウンロードしたファイルを解凍して削除

# tar zxvf phpMyAdmin-4.3.11.1-all-languages.tar.gz

# rm -f phpMyAdmin-4.3.11.1-all-languages.tar.gz

 

★ディレクトリ名を変更

解凍後のデレクトリ名 phpMyAdmin-4.3.11.1-all-languages を任意の名前に変更します。phpMyAdminの名前のままだとセキュリティ上あまり良くないと言われているので全く関係ない名前が良いと思います。今回は例として New_Name という名前にしてみます!

# mv phpMyAdmin-4.3.11.1-all-languages New_Name

 

phpMyAdmin のデータベースを作成 (環境保管領域の作成 )

ダウンロードしたディレクトリの中にあるSQLスクリプトを使用します。

# mysql -u root -p
Enter password: ← MySQLのrootパスワードを入力

mysql> source /var/www/New_Name/examples/create_tables.sql
※実行結果
Database changed
Query OK, 0 rows affected (0.00 sec)



Query OK, 0 rows affected (0.00 sec)
※データベースの確認
mysql> show databases; (phpmyadminが作られていればOK)
mysql> use phpmyadmin;
mysql> show tables; (17個のテーブルが出来ました)
mysql> exit
Bye

 

★config.inc.php の編集

config.sample.inc.php というサンプルファイルが入っているので、それをコピーして編集します。

# cd New_Name
# cp config.sample.inc.php config.inc.php

config.inc.phpパーミッションを変更

# chmod 660 config.inc.php
# vi config.inc.php
※config.inc.php の編集画面

$cfg['blowfish_secret'] = ''; ←ここに任意のランダムな文字を入れます

(例)
$cfg['blowfish_secret'] = 'kcBuCmxLfatnW0qTCVFXEQV0HO7KhrCYwavUtZQYpqN2JVA';
※これはパスワードではなく、cookie 認証でパスワードを暗号化するため
のものなので覚えなくて大丈夫です(^^)

$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;

※デフォルトの言語を日本語に
$cfg['DefaultLang'] = 'ja-utf-8';

※行頭の//を消す
// $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]['userconfig'] = 'pma__userconfig';
// $cfg['Servers'][$i]['recent'] = 'pma__recent';
// $cfg['Servers'][$i]['favorite'] = 'pma__favorite';
// $cfg['Servers'][$i]['users'] = 'pma__users';
// $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
// $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
// $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
// $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';



$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]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';

 

★root ログインの禁止(config.inc.php)

セキュリティがかなりアップというわけではないけど、やらないよりはやった方が良いかなと思うので phpMyAdmin での root のログイン禁止を追記します。

$cfg['Servers'][$i]['AllowRoot'] = false;

:wq で編集を終了!

 

★root の代わりに全ての実行権を持つユーザーを作成

なるべく複雑なユーザ名とパスワードを作ります。
お役立ちサイト:パスワード自動生成 (Automated Password Generator)

# mysql -u root -p
Enter password: ← MySQLのrootパスワードを入力

mysql> GRANT ALL PRIVILEGES ON *.* TO ユーザー名@localhost IDENTIFIED BY 'パスワード';

 

★Apacheでの表示を設定するファイルの作成(新規ファイル)

使用中のIPアドレスを確認できるサイト:アクセス情報【使用中のIPアドレス確認】

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

※phpmyadmin.conf の編集画面

※セキュリティ向上のために実際のディレクトリの名前とは違うURLを設定します。
Alias /任意のURL /var/www/New_Name (実際のディレクトリ)

↓ URLを air60v2vrcsxyftm にする場合の例


Alias /air60v2vrcsxyftm /var/www/New_Name

※アクセス制限

<Directory /var/www/New_Name/>
AddDefaultCharset UTF-8

<IfModule mod_authz_core.c>
# Apache 2.4の場合
<RequireAny> ← 1つ以上の条件が合えばOKという意味
  ※全ての条件にマッチしなければ許可しない場合は <RequireAll>

Require ip 127.0.0.1 ← ipv4のローカル・ループバック・アドレス
Require ip ::1 ← ipv6のローカル・ループバック・アドレス
Require ip 接続を許可するIPアドレスの追記
  # ↓ どこからでもアクセスできるようにする設定(セキュリティが弱くなります)
Require all granted
</RequireAny>
</IfModule>

<IfModule !mod_authz_core.c>
# Apache 2.2の場合
Order Deny,Allow
Deny from All
Allow from 127.0.0.1 ← ipv4のローカル・ループバック・アドレス
Allow from ::1 ← ipv6のローカル・ループバック・アドレス
Allow from 接続を許可するIPアドレスを追記 
# ↓ どこからでもアクセスできるようにする設定(セキュリティが弱くなります)
Allow from All
</IfModule>
</Directory>

<Directory /var/www/New_Name/setup/>
   <IfModule mod_authz_core.c>
      # Apache 2.4
     <RequireAny>
# ↓ ローカルからの接続のみ許可の設定
      Require ip 127.0.0.1
      Require ip ::1
     </RequireAny>
   </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 /var/www/New_Name/libraries/>
Order Deny,Allow
Deny from All
Allow from None
</Directory>

<Directory /var/www/New_Name/setup/lib/>
Order Deny,Allow
Deny from All
Allow from None
</Directory>

<Directory /var/www/New_Name/setup/frames/>
Order Deny,Allow
Deny from All
Allow from None
</Directory>

:wq で編集を終了(^^)/

 

★Apacheに phpmyadmin.conf を読み込ませる設定

# vi /etc/httpd/conf/httpd.conf

以下を追記

Include /etc/httpd/conf.d/phpmyadmin.conf

:wq

 

Basic認証の設定

できるだけセキュリティを上げたいので Basic認証を設定します。

任意の場所にパスワードファイルを作成します(今回は例として /var/www/の下に New_Basic というディレクトリを作ってファイルを入れたいと思います)。

# mkdir /var/www/New_Basic
# cd /var/www/New_Basic
# htpasswd -c .htpasswd 任意のユーザ名
New password: 任意のパスワード
Re-type new password: 同じパスワード
Adding password for user ユーザ名

phpmyadmin.conf にBasic認証の記述を追記します。

# vi /etc/httpd/conf.d/phpmyadmin.conf
<Directory /var/www/New_Name/>
AddDefaultCharset UTF-8

#追記
AuthType Basic
AuthName "Please enter your ID and password"
AuthUserFile /var/www/New_Basic/.htpasswd
Require valid-user

<IfModule mod_authz_core.c>
# Apache 2.4の場合
<RequireAny>
Require ip 接続を許可するIPアドレス
 </RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2の場合
Order Deny,Allow
Deny from All
Allow from 接続を許可するIPアドレス
 </IfModule>
</Directory>

<Directory /var/www/New_Name/setup/>

#追記
AuthType Basic
AuthName "Please enter your ID and password"
AuthUserFile /var/www/New_Basic/.htpasswd
Require valid-user

   <IfModule mod_authz_core.c>
      # Apache 2.4
     <RequireAny>
      Require ip 127.0.0.1
      Require ip ::1
     </RequireAny>
   </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>

 

★phpMyAdiminの所有者の変更

# chown -R root.apache /var/www/New_Name/

 

httpd の再起動

# service httpd restart

完了!

 

設定が完了したら「https://ドメイン(またはIPアドレス) / phpmyadmin.confで設定した任意のURL」にアクセス!今回の例では 「https://ドメイン/air60v2vrcsxyftm」です。

SSLは証明書を購入しなくても使えるので「https://~」で接続した方が良いと思います。SSL証明書は「信頼できるサイト」ということを証明するものなので、SSL証明書をインストールしない状態で「https://~」に接続すると、ブラウザが危険だと警告を表示しますが(なりすましのサイトの可能性がある等の警告が出ます)、自分の管理しているサーバで作業している場合は問題ありませんので「接続」を選びます。SSLで接続しないと、MySQLのユーザ名・パスワードが第三者に漏れてしまう可能性があり危険です。

 

f:id:nani-sore:20150303145051p:plain

 

この画面が表示されたらインストール成功です!ログインできるか試してみます。

まずは、root ログインの禁止がきちんと設定されているか確かめるために、rootでログイン。

f:id:nani-sore:20150303145631p:plain

 

拒否されたら成功です。最後に権限を与えたユーザーでログインできれば phpMyAdminのインストール完了です!

f:id:nani-sore:20150303150429p:plain

ログインするとこのような注意が表示されていると思いますが、これは「翻訳を手伝ってください」という呼びかけで、インストールに不具合があるという警告ではないので問題ありません。