はぴすぷ

【XAMPP】2015年10月から導入手順がまた難解に!対応の方法!securityが無い!

      2015/11/11

xampp_security

XAMPPの5.5.30と、5.6.14が、2015/10/19にリリースされていました。

XAMPP公式ブログ(英語):New XAMPP with MariaDB

どうやらMySQLを取っ払って、MariaDBに乗り換えたらしい。

MariaDBは、MySQL派生のデータベースで、オリジナルコードの作者である「Michael “Monty” Widenius」さんが開発プロジェクトを立ち上げた。基本はMySQLをベースに改良を加えたものだったが、現在は少し方向性が変わって独自進化を遂げている。

あのGoogleが、MariaDBに開発者を派遣して、MySQLからMariaDBに乗り換えたことに加え、XAMPPもMariaDBに乗り換えたとなると、今後MySQLは下火になるかもしれませんね(´・ω・`)

とりあえずXAMPPのMはMySQLのMではなく、MariaDBのMに変わりました!

こんなことを言いたいんじゃなかった!

どうやら、今回のバージョンで更に初期設定の方法が分かりにくくなってました!

4ヶ月程前の5.6.11へのバージョンアップで、お馴染み画面を構成していた「xamppディレクトリ」を削除して、大混乱を起こしてくれました。
2015年7月からXAMPPの導入手順が分かりにくくなりました!対応の方法

今回はセキュリティの設定機能を構成していた「securityディレクトリ」を削除してしまったようです。

スポンサーリンク

コミュニティでも不満爆発

前回のバージョンアップから、何を余計なことしてくれてるんだ!ユーザーのことを考えろ!といったような声が上がっています。

Apache Friends Support Forum • View topic – New Welcome XAMPP and docs

以下Chromeの翻訳→なんとなく解釈したもの。(全然合ってない可能性大)

phpMyAdminどこやねん!

→5.6.12でdashboardにリンクが追加される。

勉強できないからサンプル戻して!

→13年も前のゴミコードなんて見る必要ない。

機能削除はメジャーバージョンアップですべきじゃないの?

→スルー。

慣れ親しんだ機能を削除してコミュニティを困惑させるな!

→古い機能はバグっているし時代遅れで、削除される多くの理由がある。それなことより新しいdashboardを改善する方法を教えてくれ。

どうやって設定するんだよ!

みんな困ってんだよ!localhost開いたらdashboardだし、こんなの地獄だろ。

→HOW-TO Guides見ろよ!

トップページにある動画と画面ちゃうやんけ!

オレンジのメニューバーが出ないから設定ミスってんのかと思った。修正しようとして無駄に時間費やしたわ!動画更新しろよ!

→スルー。

FAQがでたらめじゃねーか!

どうやって全ての機能が動いていることをテスト出来ますか?

これだよこれ。(5.6.11で削除!)

xampp-windows-start

こんなページねーよ!

→スルー。

phpMyAdminでエラーが出る!securityがない!

MySQLのrootにパスワードが無いと怒られる。FAQに書いてる通り「http://localhost/security/」で設定しようとしたら「Object not found!」。コマンドラインで変更したら、phpMyAdminに弾かれるようなった。XAMPPの最新版はアンインストールして昔のものを入れるしか無い。

→スルー。

いやー酷いね(^q^)ほんと余計なことすんなって言うw

特に今回のバージョンアップで何でsecurityが消されたのかは謎!

セキュリティ上良くないから!とxamppを削除したくせに、MySQL…じゃなかった…。MariaDBのrootをパスワードは空のまま放置させるような状態にしてしまっている…。

そしてFAQとかは、かなりのデタラメ。うーん…。辛い。

無くなったセキュリティ設定機能

今回のバージョンアップで無くなったsecurityディレクトリなんですが、アーカイブ版(.zip、.7z)にはまだ存在していました。インストーラーでインストールした場合のみ消滅してしまいます。

ただ、securityディレクトリが存在していても、Apacheの設定ファイルからAliasの情報が消されていたので、いつも通り「http://localhost/security/」にアクセスしても「Object not found!」が表示されます。

securityを復活させる

一応、アーカイブ版をダウンロードして、消されていた設定を復活させれば、securityを復活させることが可能です。(あまりオススメはしません。)

触るのは以下の設定ファイル。

C:\xampp\apache\conf\extra\httpd-xampp.conf

消された設定というのが、下の方にある(75行目辺り)

<IfModule alias_module>

のすぐ下にあった、以下の内容。

Alias /security "C:/xampp/security/htdocs/"
<Directory "C:/xampp/security/htdocs">
    <IfModule php5_module>
        <Files "xamppsecurity.php">
            php_admin_flag safe_mode off
        </Files>
    </IfModule>
    AllowOverride AuthConfig
    Require all granted
</Directory>

これを戻すことで、今まで通りsecurityの画面を表示できます。

そしてすぐ下にあった設定が気になった…。

# New XAMPP security concept
#
<LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))">
    Require local
    ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</LocationMatch>

あれ?これがあれば、外部からの接続は拒否れてるんじゃ…(;・∀・)まぁいいか。

securityがやってくれていたこと

一応、securityの機能を復活させる方法をお伝えしましたが、そもそもsecurityがやってくれていたことを自分で出来れば消えてくれても問題ありませんよね。

そしてsecurityがやってくれていたことを上げると、以下の3点です。

  1. xamppディレクトリにベーシック認証かける
  2. MySQLのrootのパスワード変更
  3. phpMyAdminに認証をかける(ベーシックかcookieを選択)

でもこの内の1は、前回のバージョンアップでxamppディレクトリを削除されてしまったので、意味を成しません。

なので、2と3を自分で設定してあげれば、securityが無くても問題ありません。

というわけで対応します。

MySQLのrootのパスワード変更

間違えた。MariaDBだった!

でもね…。コマンドはMySQLのままなんだ…!

MariaDBでrootのパスワードを変更する方法。

まずコマンドプロンプトから、MariaDBのコマンドを使う為にPATHを通す必要があります。

分からない人はこちらを参考に。
XAMPPのMySQLをコマンドプロンプトから使用する。Windows環境変数Pathの設定

コマンドプロンプトで以下の様に入力。

mysqladmin -u root password

後ろに半角スペースを入れてパスワードを続けることが出来ますが、丸見えで履歴も残るのでおすすめしません。

コマンドを入力すると新しいパスワードを聞いてくるので入力します。

New password: ********
Confirm new password: ********

別の方法として、ログインしてから

mysql -u root

パスワードを変更することでも可能です。

SET PASSWORD = PASSWORD('**password**');

終了

quit

これでMariaDBのrootのパスワードは設定完了。

phpMyAdminの認証設定

MariaDBのrootのパスワードを変更したことによって、phpMyAdminに接続しようとしても、以下のエラーメッセージが表示されて入れなくなります。

SS_3676

接続できません。設定が無効です。
MySQL サーバに接続しようとしましたが拒否されました。config.inc.php のホスト、ユーザ名、パスワードが MySQL サーバの管理者から与えられた情報と一致するか確認してください。

書いてある通り、「config.inc.php」を弄ってあげれば良い。

このファイルの場所は、「C:\xampp\phpMyAdmin\config.inc.php」にある。
ファイルを開いて、以下の部分を探します。

/* Authentication type and info */
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';

設定ファイルから自動でログインする場合は、auth_typeはconfigのまま、passwordに先程設定した、rootのパスワードを入力する。(セキュリティ上おすすめしません。)

$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['password'] = '**password**';

Webフォームでログインする場合はcookieを入力。

$cfg['Servers'][$i]['auth_type'] = 'cookie';

ベーシック認証の場合はhttpを入力。

$cfg['Servers'][$i]['auth_type'] = 'http';

これでphpMyAdminの認証の設定は完了。

一通りsecurityでやっていてくれたことも完了。

phpMyAdminのエラー対応

認証の設定は出来たが、phpMyAdminにログインすると画面下部にエラー的なメッセージが表示されている。

SS_3677

phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています。理由についてはこちらをご覧ください。代わりにデータベースの操作タブを使って設定することもできます。

このメッセージの「こちら」をクリックすると、テーブルの有無が表示される画面に遷移する。

そして画面上部と下部にメッセージがある。

上部のメッセージ

SS_3678

Create missing phpMyAdmin configuration storage tables.

下部のメッセージ

高度な機能の設定する簡単な方法:

  • Create the needed tables with the ./sql/create_tables.sql.
  • 作ったテーブルにアクセスできる pma ユーザを作成します。
  • 設定ファイル (config.inc.php) で高度な機能を有効にします。config.sample.inc.php にある設定例をコピーするといいでしょう。
  • 更新した設定ファイルを読み込むために phpMyAdmin にログインし直します。

画面上部にあった、「Create」を押せば、必要なテーブルをsqlファイルから作成してくれるので、今回のエラーはそれで解決する。
他の項目は特に対応する必要はない。

以上で初期設定は全て完了です。

終わりに

まったく手間取らせやがって┐(´д`)┌

XAMPPで困ってる人が良く当サイトに辿り着いているようなので、5.6.14がリリースされてからは、この情報を求めて来てくれてたのかもしれないですね…。早めに対応できて良かった。

今回この記事を書くきっかけになったのは、前回のバージョン5.6.11に対応した記事で、こんなコメント貰ったことからでした。

はじめまして!はるなと申します。

~中略~

解決方法はさっぱりわからずお手上げ状態なのですが、まちゃぬ様のお知恵をお借りできないでしょうか?厚かましいお願いですが、アドバイスいただければ幸いです。

(若くて可愛いい)女の子(のはず!)に、まちゃぬ様なんて言われてお願いされたら、やるしか無いよね(^q^)

えぇ、そんな私はこのバナー広告に釣られて「teratail」に登録した男の1人ですw

teratail

出典:Leverages { MARKETING BLOG }

困ったことがあれば、teratailで聞けばいいんだよ!

こんな可愛い子が職場にいたら戦場になりかねないね!

昔同じ職場に、可愛いおばちゃんと、ギャルっぽいエンジニアがいた事がありました。普通なら恋愛対象にならないはずなんだけど、余裕で恋愛対象に含まれましたねw

女の子はみんなエンジニアになれば良いと思う\(^o^)/

というわけで、(若い女性の)初心者の方の助けになれれば幸いです。

それでは!

 - MySQL, Webサイト構築, XAMPP ,