phpMyAdminも移行

さくらVPSのサーバ移行に伴いphpMyAdminも移行というか再インストールすることになって、ひと悶着あったのでそのログを残しときます。

旧サーバのphpMyAdminをそのままアップ

旧サーバで動いてるphpMyAdminはバージョンが2.11.11なんですが、これを移行先のサーバにそのままアップしてみました。
そしたらこんなエラーが表示されました。。

php-mysqlをインストール

mysql 拡張をロードできません。PHP の設定を確認してください
このエラーは「php-mysql」がないときに表示されるみたいです。
そんなわけでphp-mysqlをインストールして、Apacheを再起動します。
$ sudo yum --enablerepo=remi install php-mysql
   :
$ sudo /etc/init.d/httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

これでさっきのエラーは出なくなりました!ちゃんとログイン画面が表示されました。

が、別のエラーが!

php-mcryptをインストールする

つづいてこんなエラーが出るようになりました。
mcrypt 拡張をロードできません。PHP の設定を確認してください

このエラーが表示される場合は「php-mcrypt」をインストールすることで解決するみたいです。
そんなわけでphp-mcryptをインストールして、Apacheを再起動します。

$ sudo yum --enablerepo=remi install php-mcrypt
   :
$ sudo /etc/init.d/httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

これでさっきのエラーは出なくなりました!

で、ログインしてみると、

またヘンなエラー出たー。

php-mbstringをインストールする

今度はこんなエラーが出るようになってしまいました。

PHP の mbstring 拡張が見つかりませんでした。マルチバイト文字セットを使用しているようですが、mbstring 拡張がないと phpMyAdmin は文字列を正しく分割できないため予期しない結果になることがあります

このエラーが表示される場合は「php-mbstring」をインストールすることで解決するみたいです。
そんなわけでphp-mbstringをインストールして、Apacheを再起動します。

$ sudo yum --enablerepo=remi install php-mbstring
   :
$ sudo /etc/init.d/httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

はい!これでエラー消えた!やったー!

3.5.1にバージョンアップ

phpMyAdminの最新バージョンは3.5.1ってことなので最新バージョンにしてみます。
こちらからダウンロードします。

phpMyAdmin - Download

で、ダウンロードしたファイルを解凍してアップします。

ログインしたらこんなメッセージがでた

phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています。理由についてはこちらをご覧ください。

なにこれ。><

で、調べたら解決方法が載ってました

examples/create_tables.sql で必要なテーブルを作成

mysqlにルートでログインします。

$ mysql -uroot -p(パスワード)

phpMyAdminのファイルの中にsql情報があるので、インポートします。

mysql> source /var/www/.../phpMyAdmin/examples/create_tables.sql

インポートできたか確認します。

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

mysql> use phpmyadmin;
Database changed
mysql> show tables;
+----------------------+
| Tables_in_phpmyadmin |
+----------------------+
| pma_bookmark         |
| pma_column_info      |
| pma_designer_coords  |
| pma_history          |
| pma_pdf_pages        |
| pma_recent           |
| pma_relation         |
| pma_table_coords     |
| pma_table_info       |
| pma_table_uiprefs    |
| pma_tracking         |
| pma_userconfig       |
+----------------------+
12 rows in set (0.00 sec)

12個テーブルができてればおk。

作ったテーブルにアクセスできる pma ユーザを作成

mysql> GRANT ALL ON phpmyadmin.* TO pma@localhost IDENTIFIED BY "*****";
Query OK, 0 rows affected (0.02 sec)

パスワードはテキトーな文字に変更しましょう。

設定ファイル (config.inc.php) で高度な機能を有効に

以下のファイルを編集します。

$ vi /var/www/…/phpMyAdmin/config.inc.php

以下のように修正します。
$cfg['Servers'][$i]['controlpass']の項目は先に設定したpmaユーザのパスワードを設定します。

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

/* 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';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma_table_uiprefs';
/* Contrib / Swekey authentication */
$cfg['Servers'][$i]['auth_swekey_config'] = '/etc/swekey-pma.conf';

以上の作業をしてログインし直せば、エラーは消えているはずです。

文字化け発生

DBの内容を確認すると文字化けが発生してる。。。
でもこれはいつかきた道、/etc/my.cnfに以下の内容を追記すれば解決することは過去に経験済み。

default-character-set=utf8
skip-character-set-client-handshake

/etc/my.cnfに上記を追記して、mysqlを再起動すると、、、、起動に失敗!なぜ!

どうやら「default-character-set」というオプションが廃止されて、「character-set-server」というオプションになったんですと。 そんなわけで、/etc/my.cnfの内容を以下のように変更します。

# character-set
#default-character-set=utf8
character-set-server=utf8
skip-character-set-client-handshake

これでmysqlを起動すると、、、起動できた!文字化けも直ってる!

というわけで、思いのほか苦労しましたが、phpMyAdminの移行及びバージョンアップが完了です。