○ phpMyAdminのインストール

・WebブラウザからMySQLを管理します
・phpMyAdmin-4.7.1をインストールし、設定します
・httpd・php・mysqlが先に起動している必要があります
・PHP 5.5 以上、MySQL 5.5 以上が必要です
・詳細はソースに含まれる doc/html を参照してください

・ファイルの取得、削除は省略します
・エディタ、ファイラーの操作は省略します
・ソースを展開したら説明文を読みましょう
・Enterキーを省略します

・ログイン端末で "#" はroot、"$" は一般ユーザのプロンプトの記号です
・設定ファイルで "#" で始まる行はコメントとして解釈されます

○関連サイト

:phpMyAdmin-4.7.1-all-languages.tar.gz (http://www.phpmyadmin.net/)

○参照ファイル

最初の設定 (Xen)
mysqlのインストール
imap/mcryptのインストール
httpd/phpのインストール

○インストール環境

:OS CentOS 6.9
:selinux disabled or permissive
:インストール先  /home/www/myhome/
:作業 ~/src
:ユーザー rootで実行

・メンテナンスの場合は一般ユーザから行います



○phpMyAdmin-4.7.1

・phpMyAdmin 4.0.x(サポート継続中)とは構成が異なるので注意

○ファイルの展開・コピー

・適当なディレクトリでソースを展開します
・phpmyadminへ名前を変えてapacheのディレクトリにコピーします
・upload、save、tmpディレクトリをつくります
・ディレクトリ名は、自分の環境に読みかえてください

# cd /home/www/myhome
[root@jupiter:/home/www/myhome]
# tar zxvf phpMyAdmin-4.7.1-all-languages.tar.gz
# mv phpMyAdmin-4.7.1-all-languages phpmyadmin

・upload、save、tmpディレクトリの作成

# mkdir -p phpmyadmin/{upload,save,tmp}

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

・SQLクエリを発行してデータベースを作成します
・phpMyAdminで用意されているsqlファイルを読み込みます
・create_tables.sqlを修正すれば、デフォルト値の変更は可能です
・4.6.xからcreate_tables.sqlは sqlディレクトリ に配置されています
・データベースphpmyadmin の管理者とパスワードを設定します
・"pmapass"にはオリジナルのパスワードを入れてください

# /usr/local/mysql/bin/mysql -u root -p
Enter password:← パスワード(mysql管理者)の入力
mysql> source /home/www/myhome/phpmyadmin/sql/create_tables.sql;
mysql> show databases;
mysql> use phpmyadmin;
mysql> show tables;
mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO pma@localhost IDENTIFIED BY "pmapass";
mysql> select host,user,password from mysql.user;
mysql> flush privileges;
mysql> quit;


○config.inc.phpファイルの作成

:setupファイルで作成します

・apacheのアクセスできるconfigディレクトリをつくります

# cd /home/www/myhome/phpmyadmin
[root@jupiter:/home/www/myhome/phpmyadmin]
# mkdir -m 777 config

・クライアントのブラウザでhttp://サーバ名/phpmyadmin/setup/にアクセスし
 設定ファイルをつくります (作業工程は省略)
 設定ファイルをphpmyadminディレクトリにコピーします

# cp -a config/config.inic.php .
# rm -r config

・またはsampleファイルをコピーします

# cp config.sample.inc.php config.inc.php

○config.inc.phpファイルの修正

:/home/www/myhome/phpmyadmin/config.inc.php

・参考になる config.default.php は phpmyadmin/libraries にあります
・'PmaAbsoluteUri'は4.6.xではなくなりました
・'TranslationWarningThreshold'日本語化の程度を指定(%) 警告への対処
・'blowfish_secret'には、cookie認証で使うパスフレーズを入れます (32文字以上)
・'UploadDir''SaveDir''TempDir'の設定に注意、場所によっては絶対パスが必要
・'connect_type' (How to connect to MySQL server) は4.7.xではなくなりました
・'auth_type'には認証モードを入れます
・'LogoutURL'には、画面の[ログアウト]アイコンでもどるURLを入れます
・'pmadb'以下の設定値はmysqlで作成したデータベースに合わせます
・'controluser''controlpass'は、安全のため外部からincludeします
・青色の部分はconfig.default.phpの設定値のままです

<?php

$cfg['TranslationWarningThreshold'] = 69;
$cfg['blowfish_secret'] = 'mfgrngrvvglij3dtczobdu4spfmkzcba';
$cfg['ServerDefault'] = 1;
$cfg['DefaultLang'] = 'ja';
$cfg['UploadDir'] = './upload';
$cfg['SaveDir'] = './save';
$cfg['TempDir'] = './tmp';

/* Servers configuration */
$i = 0;

/* Server: localhost [1] */
$i++;
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['LogoutURL'] = 'http://ja.528p.com/';
$cfg['Servers'][$i]['verbose'] = '';

/* 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]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$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]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

/* include pmapassword setting */
 
include ("/home/www/myhome/trust/pma_auth.php");

/* End of servers configuration */
?>

:/home/www/myhome/trust/pma_auth.php

・'pmapass'にはmysqlで設定したパスワードを指定します

<?php
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'pmapass';  
?>

○アップデート

・既に phpmyadminディレクトリ が存在する場合です
・適当なディレクトリでソースを展開します
・デフォルトの設定ファイルを保存します
・ディレクトリ名は、自分の環境に読みかえてください

・バックアップをとります

# cd /home/www/myhome
[root@jupiter:/home/www/myhome]
# mv phpmyadmin phpmyadmin47000

# tar zxvf phpMyAdmin-4.7.1-all-languages.tar.gz
# mv phpMyAdmin-4.7.1-all-languages phpmyadmin

・設定ファイルのコピー

# cp phpmyadmin47000/config.inc.php phpmyadmin/

・設定ファイルの修正 (必要な場合)

# vi phpmyadmin/config.inc.php

・ディレクトリの作成 (必要な場合)

# mkdir -p phpmyadmin/{upload,save,tmp}

・ユーザ・グループ・パーミッションの変更

# cd /home/www/myhome
[root@jupiter:/home/www/myhome]
# chown -R apache:apache phpmyadmin
# find phpmyadmin -type f -print0 | xargs -0 chmod g-w,o-rwx
# find phpmyadmin -type d -print0 | xargs -0 chmod g-rw,o-rw

・setupファイルにアクセスできないようにします

# chmod -x phpmyadmin/setup

・データベースphpmyadmin (環境保管領域) の修正 (必要な場合)
・create_tables.sql 4.4.15, 4.6.6, 4.7.1 の差異は 下記参照

・バックアップを取ります

# /usr/local/mysql/bin/mysqldump -u root -p phpmyadmin > phpmyadmin.dump
Enter password:← パスワード(mysql管理者)の入力

・データベースphpmyadmin のtableの変更と追加

# /usr/local/mysql/bin/mysql -u root -p
Enter password:← パスワード(mysql管理者)の入力

・4.4.xからupdateする場合

mysql> source /home/www/myhome/phpmyadmin/sql/create_tables.sql
mysql> show databases;
mysql> use phpmyadmin;
mysql> show tables;
mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO pma@localhost IDENTIFIED BY 'pmapass';
mysql> select host,user,password from mysql.user;
mysql> flush privileges;

・4.6.6よりupdateする場合 ('pma__bookmark'の'id'み変更)

mysql> source /home/www/myhome/phpmyadmin/sql/upgrade_tables_4_7_0+.sql
mysql> show databases;
mysql> use phpmyadmin;
mysql> show tables;
mysql> show columns from pma__bookmark;
mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO pma@localhost IDENTIFIED BY 'pmapass';
mysql> select host,user,password from mysql.user;
mysql> flush privileges;

mysql> quit;

○ユーザ・グループ・パーミッションの変更

・ユーザ・グループは httpd.conf の設定に合わせます
・空白の含まれるディレクトリ名があるので注意します

# cd /home/www/myhome
[root@jupiter:/home/www/myhome]
# chown -R apache:apache phpmyadmin
# find phpmyadmin -type f -print0 | xargs -0 chmod g-w,o-rwx
# find phpmyadmin -type d -print0 | xargs -0 chmod g-rw,o-rw

・setupファイルにアクセスできないようにします

# chmod -x phpmyadmin/setup

・pmaパスワードファイルも変更しておきます

# chown apache:apache /home/www/myhome/trust/pma_auth.php
# chmod 640 /home/www/myhome/trust/pma_auth.php

○selinuxヘの対応 (selinuxが有効の場合)

・新規インストールファイルのselinuxラベルを修正

# cd ~
[root@jupiter:~]
# restorecon -RFv /home/www/myhome

○アクセス制限をします

・ローカルからの接続のみ許可します
・"SSLRequireSSL" SSLでセキュアな接続をします (SSLの設定は省略)
・ブラウザからlibrariesへの直接の接続要求を拒否します
・バージョン4.6.3以降、Refererを返さないようです
・Refererを使ってアクセス制御をしている場合は注意

・mod_securityを全体で有効にしている場合、個別に制御できないことがあります
・mod_securityの設定で個別のIPアドレスからの接続を無視する設定をして下さい

:httpd-personal.conf (ファイル名は各自、httpdの設定を参照)

・httpd(apache) 2.4 の場合

<IfModule alias_module>
    Alias /phpmyadmin "/home/www/myhome/phpmyadmin"
</IfModule>

<Directory "/home/www/myhome/phpmyadmin">
    Options Includes ExecCGI
    SSLRequireSSL
    Require ip 192.168.0
</Directory>

<Directory "/home/www/myhome/phpmyadmin/libraries">
    Require all denied
</Directory>

・httpd(apache) 2.2 の場合

<IfModule alias_module>
    Alias /phpmyadmin "/home/www/myhome/phpmyadmin"
</IfModule>

<Directory "/home/www/myhome/phpmyadmin">
    Options Includes ExecCGI
    SSLRequireSSL
    Order deny,allow
        Deny from all
        Allow from 192.168.0
</Directory>

<Directory "/home/www/myhome/phpmyadmin/libraries">
    Order deny,allow
        Deny from All
</Directory>

:httpdをリスタートします

[root@jupiter:~]
# service httpd restart

○ログインします

URL https://ja.528p.com/phpmyadmin/

・MySQLのユーザ・パスワードを聞かれます
・root (mysqlの管理者) でログインします



○create_tables.sqlの差異

:phpMyAdmin-4.4.15 ~ 4.7.1

--- create_tables.sql.4415	2017-01-24 04:08:47.000000000 +0900
+++ create_tables.sql.471	2017-05-26 22:22:42.000000000 +0900
@@ -37,7 +37,7 @@ USE phpmyadmin;
 --
 
 CREATE TABLE IF NOT EXISTS `pma__bookmark` (
-  `id` int(11) NOT NULL auto_increment,
+  `id` int(10) unsigned NOT NULL auto_increment,
   `dbase` varchar(255) NOT NULL default '',
   `user` varchar(255) NOT NULL default '',
   `label` varchar(255) COLLATE utf8_general_ci NOT NULL default '',
@@ -81,7 +81,7 @@ CREATE TABLE IF NOT EXISTS `pma__history
   `username` varchar(64) NOT NULL default '',
   `db` varchar(64) NOT NULL default '',
   `table` varchar(64) NOT NULL default '',
-  `timevalue` timestamp NOT NULL,
+  `timevalue` timestamp NOT NULL default CURRENT_TIMESTAMP,
   `sqlquery` text NOT NULL,
   PRIMARY KEY  (`id`),
   KEY `username` (`username`,`db`,`table`,`timevalue`)
@@ -231,7 +231,7 @@ CREATE TABLE IF NOT EXISTS `pma__trackin
 
 CREATE TABLE IF NOT EXISTS `pma__userconfig` (
   `username` varchar(64) NOT NULL,
-  `timevalue` timestamp NOT NULL,
+  `timevalue` timestamp NOT NULL default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
   `config_data` text NOT NULL,
   PRIMARY KEY  (`username`)
 )
@@ -321,3 +321,35 @@ CREATE TABLE IF NOT EXISTS `pma__central
 )
   COMMENT='Central list of columns'
   DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `pma__designer_settings`
+--
+
+CREATE TABLE IF NOT EXISTS `pma__designer_settings` (
+  `username` varchar(64) NOT NULL,
+  `settings_data` text NOT NULL,
+  PRIMARY KEY (`username`)
+)
+  COMMENT='Settings related to Designer'
+  DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `pma__export_templates`
+--
+
+CREATE TABLE IF NOT EXISTS `pma__export_templates` (
+  `id` int(5) unsigned NOT NULL AUTO_INCREMENT,
+  `username` varchar(64) NOT NULL,
+  `export_type` varchar(10) NOT NULL,
+  `template_name` varchar(64) NOT NULL,
+  `template_data` text NOT NULL,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `u_user_type_template` (`username`,`export_type`,`template_name`)
+)
+  COMMENT='Saved export templates'
+  DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

:phpMyAdmin-4.6.6 ~ 4.7.1

--- create_tables.sql.466	2017-01-24 04:20:26.000000000 +0900
+++ create_tables.sql.471	2017-05-26 22:22:42.000000000 +0900
@@ -37,7 +37,7 @@ USE phpmyadmin;
 --
 
 CREATE TABLE IF NOT EXISTS `pma__bookmark` (
-  `id` int(11) NOT NULL auto_increment,
+  `id` int(10) unsigned NOT NULL auto_increment,
   `dbase` varchar(255) NOT NULL default '',
   `user` varchar(255) NOT NULL default '',
   `label` varchar(255) COLLATE utf8_general_ci NOT NULL default '',



○いくつかの拡張機能が無効になっています (参考)

○データベースphpmyadmin を作ってリレーション機能を有効にします

・[詳細設定]に必要なので拡張機能を組み込んでおいた方が良いです
・mysqlでcreate_tables.sqlを使用して、phpmyadmin (環境保管領域) を作成します(省略)
・config.inc.phpでデータベース管理者の設定をします

:config.inc.php

$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'pmapass';  

・config.inc.phpでデータベースの設定をします
・create_tables.sqlで作成される データベースphpmyadmin に基づいた設定値

・4.3.x ~ 4.6.x の場合 pma__ (アンダーバー2つになっているので注意)
紫色の部分 4.5.xで追加された部分

$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]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$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]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

・4.0.x ~ 4.2.xの場合 pma__ (アンダーバー2つになっているので注意)
青色の部分 4.1.xで追加された部分
紫色の部分 4.2.xで追加された部分

$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]['designer_coords'] = 'pma__designer_coords';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';



○ランダムなパスフレーズを作成 (参考)

・mkpasswdコマンドを使う(expectパッケージに含まれる)
・大文字、特殊文字を使わないオプションを指定しています

[root@jupiter:~]
$ mkpasswd -l 32 -s 0 -C 0
mfgrngrvvglij3dtczobdu4spfmkzcba

○ Copyright(c) 528p.com All Rights Reserved.