XAMPPのデータベース管理をMariaDBからMySQLに変更しました。この結果、phpMyAdminにログインすると、 phpMyAdmin環境保管領域 の設定に関するメッセージが表示されるようになりました。今回、このphpMyAdmin環境保管領域を設定する方法を自分の備忘録も兼ねて紹介したいと思います。
はじめに
さくらインターネットのサーバーにあるWordpressのデータをDuplicatorでローカル環境に復元する際、頻繁にエラーに遭遇しました。
この原因として、XAMPPのPHPのバージョンの違いやデータベース管理のMariaDBとMySQLとの互換性が挙げられます。
そこで、利用しているレンタルサーバーとローカル環境を一致させるために、PHPのバージョンを一致させ、XAMPPのデータベース管理をMariaDBからMySQLに変更しました。
サイトを復元した直後は、phpMyAdminにログインしてもエラーのようなものは表示されません。
しかし、何が切っ掛けなのか分かりませんが、phpMyAdminに再度ログインすると、以下の図1のようにトップページの下部に警告メッセージのようなものが表示されていました。
図1 |
警告メッセージを確認すると、以下のような内容でした。
phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています。理由についてはこちらをご覧ください。代わりにデータベースの操作タブを使って設定することもできます。
このメッセージについて調べてみると、以下のサイトを見つけました。
今回、このphpMyAdmin環境保管領域を設定する方法を自分の備忘録も兼ねて紹介したいと思います。
phpMyAdmin環境保管領域 について
データベースの管理をMariaDBからMySQLに変更すると、phpMyAdminに登録されていたphpmyadminのデーターベースが消えてしまいます。
図2 |
このため、phpMyAdmin環境保管領域が完全に設定されていないというメッセージが表示されます。
なので、phpmyadminのデータベースを作成すれば良いです。
データベースの作成
phpmyadminのデータベースを作成する方法は2通りあります。
- 警告メッセージに記載された「こちら」をクリックして表示されるページにある「Create」から作成する。
- 「インポート」で”create_tables.sql”を読み込んで作成する。
どちらの方法でもデーターベースにmyphpadminが作成されます。
どちらが良いかは、利用しているバージョンにも依りますし、あとは個人の好みによるかもしれません。
強いて言うなれば、”create_tables.sql”をインポートした場合、どのような項目がインポートされ、その結果がどうなったか分かります。
Createから作成する方法
「Create」からphpmyadminのデータベースを作成するには、まず、警告メッセージに表示されている「こちら」をクリックします(図3の青枠)。
次に、表示されるページで以下のような英文のメッセージが表示されています(図4)。
Create a database named ‘phpmyadmin’ and setup the phpMyAdmin configuration storage there.
図4の赤枠に示す、この「Create」をクリックすると、phpmyadminのデータベースが作成されます。
しかし、ページの再読み込みをしないと結果が反映されないので注意が必要です。
ページの再読み込みを行うと、左側のツリーメニューに「phpmyadmin」が追加されます。
図3 | 図4 |
ちなみに、図4の「お使いのブラウザは、このドメインに対しての phpMyAdmin の環境設定を(Web Storageに)保存しています。現在のセッションにその設定を読み込んでもよろしいですか?」というメッセージは現時点では消えません。
create_tables.sqlから作成する方法
“create_tables.sql”でphpmyadminのデータベースを作成するには、タブメニューにある「インポート」をクリックします(図5の赤枠)。
次に表示されるページでは、インポートするファイルを指定できるので、「ファイルを選択」ボタンをクリックします(図6の赤枠)。
すると、ダイアログボックスが表示されるので、”create_tables.sql”を選択して開きます(図7の赤枠)。
図5 | 図6 | 図7 |
ファイルを選択すると、図8の青枠に示すように選択したファイルが表示されます。
色々な設定項目がありますが、現時点では特に項目を設定する必要はありません。
なので、図8の赤枠にある「実行」ボタンをクリックします。
すると、21個のクエリが実行されるので、これで終了です。
左にあるデータベースのツリーメニューにも「phpmyadmin」が追加されているのが確認できると思います(図9)。
図8 | 図9 |
config.inc.phpの設定
phpmyadminのデータベースを作成したら終わりかというとそういう訳ではありません。
次に、config.inc.phpの編集を行う必要があります。
上記で紹介した参考サイトでは、config.inc.phpの編集を行うと書かれています。
編集前は、”Advanced phpMyAdmin features”以下のコードの前に”//”が付いており、コードがコメント化されているとのことでした。
しかし、実際には、”//”は付いておらず、コメント化されていませんでした。
また、以下のサイトでは、”config.inc.php”ではなく、”config.sample.inc.php”を編集して”config.inc.php”として保存するとのことでした。
実際、”config.sample.inc.php”では該当箇所(“Storage database and tables”以下)がコメント化されていました。
しかし、該当箇所を”config.inc.php”と”config.sample.inc.php”とで比較してみると、それぞれに以下のコードが足りませんでした。
足りないコード | |
config.inc.php |
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups'; |
config.sample.inc.php |
$cfg['Servers'][$i]['designer_coords'] = 'pma__designer_coords'; |
ただ、前述の「phpMyAdminデータベースの作成」で作成された項目と比較すると、”config.sample.inc.php”に一致しています。
また、既存の”config.inc.php”の該当箇所を”config.sample.inc.php”のものと置き替えても、警告文は消えませんでした。
そこで、”config.sample.inc.php”の”Storage database and tables”にあるコードの”//”を以下のように削除し、”config.sample.inc.php”を”config.inc.php”として上書き保存しました。
/* 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]['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]['designer_settings'] = 'pma__designer_settings'; $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';
これで問題なく、phpMyAdminの警告メッセージが消えるかと思いきや、今度はログインできなくなりました。
なぜなら、ユーザー名とパスワードの入力が必要になるからです。
しかし、ユーザー名もパスワードも設定した覚えがないので、皆目見当もつきません。
もともとあった”config.inc.php”に設定された”user”が”root”で、”password”が未記入でした。
そこで、試しに、”root”と入力しましたが、以下のようなエラーメッセージ表示されてログインできませんでした。
パスワードなしログインは設定 (AllowNoPassword 参照) によって禁止されています
このメッセージの原因は、AllowNoPasswordの設定がデフォルトで”false”になっているからです。
このため、設定を以下のように”true”に変更する必要があります。
この原因に関しては、もともとあった”config.inc.php”の設定を見ることで解決しました。
$cfg['Servers'][$i]['AllowNoPassword'] = true;
ただし、トップ画面では相変わらずユーザー名とパスワードを求められます。
この場合でもユーザー名には”root”と入力します。
余談ですが、もともとあった”config.inc.php”には、以下のような設定があります。
$cfg['Servers'][$i]['user'] = 'root'; $cfg['Servers'][$i]['password'] = '';
そこで、”config.sample.inc.php”を編集する際に、上記の設定も追加しました。
しかし、この”user”や”password”の値を変更してもログインに反映されることはありませんでした。
これは、”AllowNoPassword”をfalseにしても同じです。
むしろ、上記の”user”と”password”の設定がなくても、”AllowNoPassword”が”true”ならユーザー名がどんな名前でもログインできるようです。
ただし、ユーザー名を”root”でログインした場合(図3)とそれ以外でログインした場合(図4)では、データベースの内容が異なります。
図3 root | 図4 その他 |
ついでに、”root”とそれ以外ではタブメニューの内容も異なり、”root”には図5の赤枠に示すように「User accounts」があります。
そして、図5の青枠のようにユーザー名に”root”が登録されていることが確認できます。
しかし、それ以外のユーザー名だと「User accounts」がないため、ユーザー名を確認することが出来ません。
図5 |
この点に関しては、本来であればphpMyAdminの使い方をちゃんと勉強すれば良いのですが、今回の目的は別にあるので、これ以上のことは別の機会にしたいと思います。
“Storage database and tables”以下のコメント化を解除して、”AllowNoPassword”を”true”にして終わりかと思いきや、今度は別の警告文が表示されました(図6の赤枠)。
図6 |
こう何回も警告文が表示されるとうんざりしますね…。
警告文の内容は以下の通りです。
設定ファイルに、暗号化(blowfish_secret)用の非公開パスフレーズの設定を必要にするようになりました。
この警告文についても調べて、以下のサイトを見つけました。
というか、phpMyAdmin 環境保管領域について調べたときに表示されたサイトが暗号化(blowfish_secret)について別ページで紹介してるんですね。
もともとのMariaDBの”config.inc.php”では、この”blowfish_secret”は”xampp”だったのですが、MySQLでは32文字以上に設定する必要があります。
この件に関しては、”config.sample.inc.php”でも以下のように説明されていますね。
/**
* This is needed for cookie based authentication to encrypt password in
* cookie. Needs to be 32 chars long.
*/
恐らく、英数字なら何でも良いと思うので、”xampp”を32文字に収まるように繰り返しました。
$cfg['blowfish_secret'] = 'xamppxamppxamppxamppxamppxamppxa'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
これで目立った警告文は表示されなくなりました。
あとは、phpMyAdminのバージョンが新しくなったから更新しろというようなメッセージが表示されます。
しかし、現時点では、さくらインターネットのレンタルサーバーの環境はphpMyAdminのバージョンは3.3.10.5でもっと古いので、この警告は無視します。
とりあえず、現時点で”config.sample.inc.php”を編集すると、以下のようになります。
<?php /* vim: set expandtab sw=4 ts=4 sts=4: */ /** * phpMyAdmin sample configuration, you can use it as base for * manual configuration. For easier setup you can use setup/ * * All directives are explained in documentation in the doc/ folder * or at <https://docs.phpmyadmin.net/>. * * @package PhpMyAdmin */ /** * This is needed for cookie based authentication to encrypt password in * cookie. Needs to be 32 chars long. */ $cfg['blowfish_secret'] = 'xamppxamppxamppxamppxamppxamppxa'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ /** * Servers configuration */ $i = 0; /** * First server */ $i++; /* Authentication type */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Server parameters */ $cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['compress'] = false; $cfg['Servers'][$i]['AllowNoPassword'] = true; /** * phpMyAdmin configuration storage settings. */ /* User used to manipulate with storage */ // $cfg['Servers'][$i]['controlhost'] = ''; // $cfg['Servers'][$i]['controlport'] = ''; // $cfg['Servers'][$i]['controluser'] = 'pma'; // $cfg['Servers'][$i]['controlpass'] = 'pmapass'; /* 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]['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]['designer_settings'] = 'pma__designer_settings'; $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates'; /** * End of servers configuration */ /** * Directories for saving/loading files from server */ $cfg['UploadDir'] = ''; $cfg['SaveDir'] = ''; /** * Whether to display icons or text or both icons and text in table row * action segment. Value can be either of 'icons', 'text' or 'both'. * default = 'both' */ //$cfg['RowActionType'] = 'icons'; /** * Defines whether a user should be displayed a "show all (records)" * button in browse mode or not. * default = false */ //$cfg['ShowAll'] = true; /** * Number of rows displayed when browsing a result set. If the result * set contains more rows, "Previous" and "Next". * Possible values: 25, 50, 100, 250, 500 * default = 25 */ //$cfg['MaxRows'] = 50; /** * Disallow editing of binary fields * valid values are: * false allow editing * 'blob' allow editing except for BLOB fields * 'noblob' disallow editing except for BLOB fields * 'all' disallow editing * default = 'blob' */ //$cfg['ProtectBinary'] = false; /** * Default language to use, if not browser-defined or user-defined * (you find all languages in the locale folder) * uncomment the desired line: * default = 'en' */ //$cfg['DefaultLang'] = 'en'; //$cfg['DefaultLang'] = 'de'; /** * How many columns should be used for table display of a database? * (a value larger than 1 results in some information being hidden) * default = 1 */ //$cfg['PropertiesNumColumns'] = 2; /** * Set to true if you want DB-based query history.If false, this utilizes * JS-routines to display query history (lost by window close) * * This requires configuration storage enabled, see above. * default = false */ //$cfg['QueryHistoryDB'] = true; /** * When using DB-based query history, how many entries should be kept? * default = 25 */ //$cfg['QueryHistoryMax'] = 100; /** * Whether or not to query the user before sending the error report to * the phpMyAdmin team when a JavaScript error occurs * * Available options * ('ask' | 'always' | 'never') * default = 'ask' */ //$cfg['SendErrorReports'] = 'always'; /** * You can find more configuration options in the documentation * in the doc/ folder or at <https://docs.phpmyadmin.net/>. */
この時点で使用しているXAMPPのバージョンは7.1.14、MySQLのバージョンは5.5.59です。
これ以外のバージョンを利用している場合、上記の編集内容が合わないかもしれないので、注意してください。
編集を終えたら、”config.inc.php”として別名で保存してください。
最後に
今回の問題が起こった事の発端は、DuplicatorでさくらのサーバーにあるWordpressのデータをローカル環境に復元することでした。
Duplicatorは、復元先のXAMPPのバージョンや、データベースがMariaDBかMySQLかで復元時にエラーが出て、復元できない場合があります。
そして、データベースをMariaDBからMySQLに入れ替えたときにphpMyAdmin環境保管領域に関するエラーが表示されるようになりました。
ただ、実際にはphpMyAdmin環境保管領域の設定を行って終わりかというと、今度はAllowNoPasswordの設定で、その次はblowfish_secretの設定と問題は一つだけではありませんでした。
他のサイトでは、各設定ごとに記事を書いていたのですが、面倒なのでphpMyAdmin環境保管領域の後に続く設定もまとめることにしました。
一応、ローカル環境でDuplicatorの復元をするためにMariaDBからMySQLに入れ替えを行った場合は、この一連の流れで発生する問題は解決できると思います。
Duplicatorを使う人以外は、この記事はあまり参考にはならないかもしれませんが、何かしらの役に立てば幸いです。
コメント