phpMyAdminの環境保管領域が完全に設定されていない… エラー

おひさしぶりです。
不定期開催の今回のネタは phpMyAdmin on Ubuntu 14.04 LTS です。

とりあえずパッケージ入れてみたんですよ。
そしたら、ログインすると「phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています。理由についてはこちらをご覧ください。」と表示されたわけです。
コマンドラインから見てみると、環境保管領域に使われる phpmyadmin データベースが無かったので CREATE TABLE して…ダメ。
中身を入れればいいのかと /usr/share/doc/phpmyadmin/examples/create_tables.sql.gz を流し込んでみても…ダメ。
権限の問題かと CREATE USER と GRANT を駆使しても…ダメ。

…結局、/etc/phpmyadmin/config.inc.php の中身で環境保管領域用のテーブル名を定義している部分で「_」(下線、アンダースコア)が一つ不足していたのが原因でした。
直接そのファイルを直すかわりに /etc/phpmyadmin/conf.d/env-storage.php を以下の内容で作りました。
ほとんどは /usr/share/doc/phpmyadmin/example/config.example.inc.php からコピーしたものです。


<?php // ここから

$i = 1; // インデックスを 1 に戻して(1-ベースなので最初が 1)
/* Storage database and tables */
$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';
?> // ここまで

それから、試行錯誤している時に /etc/phpmyadmin/config.inc.php を見ていたところ、設定ファイルは次のような順序で読み込まれるようでした。(後ろにある内容が優先)

  1. /var/lib/phpmyadmin/config.inc.php (phpMyAdmin/setup で変更されるファイル)
  2. /etc/phpmyadmin/config-db.php
  3. /etc/phpmyadmin/config.inc.php (今回の悪の元凶)
  4. /etc/phpmyadmin/conf.d/*.php (設定を追加した場所)

…以上で今回のレポートを終わります。

ufw によるファイアウォール

今回は ufw です。
以前からパッケージにあるのは知っていたのですが、VPS の Ubuntu 14.04 LTS に標準で入ってるのを触るまでスルーしてました。

ファイアウォールと言えば設定した途端に SSH が使えなくなって、泣きながら実マシンのコンソールまで駆け付けるハメになる、というのはよく有る話です。
今回はクラウドの VPS を使っており、何故か Web の管理画面からコンソールが見られないという、危険が危ない状態だったので細心の注意を払いました。

ドキュメントと man を読み漁り、iptables の一番上に作業マシンの IP 許可設定を突っ込み、ufw にも IP の許可と SSH の許可を設定した上でドキドキしながら「ufw enable」を実行しました。

結果的には ufw の設定だけでも十分でしたが、iptables に書いておいた設定が上に残っているのを見て、転ばぬ先の杖は大事だと実感しました。

ちなみに ufw の使い方は、設定を ufw コマンドで行い、準備ができたら「ufw enable」で有効化するという手順になります。とりあえず、次のコマンドを設定しておけば SSH が切れる心配は少ないと思います。


ufw allow 22/tcp
ufw allow from 作業マシンのIPアドレス

指定内容は「ufw status」で見られます。
詳細な形式は(私の所では) /lib/ufw/user.rules に記録されていました。

以上。いつものように備忘メモでした。