XAMPPを使うということは、ローカル上にサーバを構築したも同然です。
ローカル環境でも、外部からアクセスされないように設定しておきましょう。
前提
セキュリティ設定をせずに、ControlPanelを終了する場合は、必ず「Stop」を押下してサービスを停止しましょう。
ソフトを「×」で落としていても、電源が入っていてLANにつながっていれば裏でサービスが起動したままになります。
つまり、電源が入っている限りWebサーバやDBサーバが起動しているということです。
気をつけましょう。
蛇足ですが……。
以下の外部サイトでは、XAMPPの「セキュリティページ」から設定を行っています。
XAMPPでセキュリティ設定を行う方法【初心者向け】
…が、バージョン5.6.11で廃止されましたので、コマンドベースで設定していきます。
XAMPPセキュリティの設定~データーベース(phpAdmin)編~
参考(FAQ)はこちらを参照ください。
WebサーバとDBサーバの起動を確認する
- ControlPanelでStartを押下
- PID(s)とPort(s)に番号が割り振られていることを確認
- Adminを押下し、以下の2つによって、正常に動作していることを確認する
- 「XAMPPへようこそ」というページが開かれること:Apache(Webサーバ)
- phpMyAdminの管理画面が開くこと:MariaDB(DBサーバ)
このままの状態では、セキュリティ設定をしていないので、外部から攻撃される可能性があります。
早速設定に移りましょう!
XAMPPのセキュリティ設定でやることは、2つ
無事起動できましたか?
それでは、早速設定を進めていきましょう!
- ➊MariaDBの管理者用IDのパスワード設定
- ➋phpMyAdminの認証設定
➊MariaDBの管理者用IDのパスワード設定
- Shellを起動(XAMPPのControlPanel→Shellを押下)
cd mysql\bin
を実行してカレントディレクトリを移動するmysql -u root
(MySQLデータベースにrootという名前のユーザにログインします)を実行する- MariaDBにrootユーザでログインした状態になる
set password=password('password');
を実行する。適当に自分の好きなパスワードを設定する。絶対忘れないようにすること!quit
を実行して、DBとの接続を終了する- ウィンドウ「×」でも閉じれるけど折角なので
exit
を実行して閉じてみましょう。
➋phpMyAdminの認証設定
1. phpMyAdminでDBにアクセスしてみます。ControlPanelの「MySQL」→「Admin」を押下します。
2. 「設定が無効です」とか言われます。phpMyAdminは、設定ファイルを参照してログイン情報を読み込みます。修正が必要になりました。
現状、MariaDBのログイン情報は、
「root:password」となっています。
phpMyAdminはこのログイン情報を知らないから、無効になってるよというわけです。
3. STOPを押下して、サービスを停止します。
4. config.inc.php
(phpMyAdminの設定ファイル)を書き換えて、ログインの認証方法を変更します。
※書き換えるときは、拡張子を変えるなどして、バックアップを取っておきましょう!
5. /phpMyAdmin/config.inc.php
を開きます。
6. /* Authentication type and info */
のところに注目
7. userに記載されているroot
を削除し、''
にする。そしてconfig
→cookie
に変更
8. サービスを起動しなおし、Adminを押下→ログインしてみる
できない場合は、ブラウザのキャッシュを削除してもう一度試してください。
【ステップアップ】一般ユーザを追加してみよう
一般的に、ルート(全ての権限を持つ最強ユーザ)は使用しません。
理由としては、なんでもできちゃうからです。
自分一人で管理する場合であっても、不手際が無いよう一般ユーザを作成し、そのアカウントで作業をするのが通例です。
以下の記事が参考になります。
ユーザの確認
コマンドプロンプトの場合
1. コマンドプロンプトを起動
2. cd .xamp\mysql\bin
3. mysql -u root -p
を実行
4. パスワードを入力
SELECT user, host FROM mysql.user;
を実行します。
パスワードも確認する場合は、SELECT user, host, password FROM mysql.user;
を実行します。
暗号化されているので、見ることはできません。
一般ユーザの追加
MariaDBでのユーザの追加はCREATE
文を使用します。
権限も同時に付与する場合はGRANT
文を使用します。
1 2 3 4 5 6 |
# ユーザの追加 CREATE USER [ユーザ名] IDENTIFIED BY '[パスワード]'; # ユーザの追加&権限付与 GRANT ALL ON *.* TO [ユーザ名] IDENTIFIED BY '[パスワード]' |
実際にGRANT
文を実行した場合の例を以下に記します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# 一般ユーザの追加(例) # 全ての権限が付与された「yamada」という一般ユーザを、「asdfghjkl」というパスワードで設定 MariaDB [(none)]> GRANT ALL ON *.* TO yamada IDENTIFIED BY 'asdfghjkl'; Query OK, 0 rows affected (0.007 sec) MariaDB [(none)]> SELECT user, host, password FROM mysql.user; +--------+-----------+-------------------------------------------+ | User | Host | Password | +--------+-----------+-------------------------------------------+ | root | localhost | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 | | yamada | % | *2DB10E7AF321F18C2984FF8E1B4FF05BF9F3927D | | root | 127.0.0.1 | | | root | ::1 | | | pma | localhost | | +--------+-----------+-------------------------------------------+ 5 rows in set (0.001 sec) |
一般ユーザでログインを確認
作成した一般ユーザにログインしてみます。
exit;
を実行し、rootからログアウトします。
1 2 3 |
MariaDB [(none)]> exit; Bye |
mysql -u yamada -p
を実行- 設定したパスワードを入力し、Enterを押下
ログインできたら成功です!
お疲れ様でした。
ここでは書きませんが、ぜひ phpMyAdmin からもログインできるかどうか確認してみてくださいね。
【補足】CREATEとGRANTの違いについて
- GRANT
- 権限も同時に付与
- 全ての権限を持たせている場合は、権限を後から絞っていく
- CREATE
- ユーザのみ作成される
- 何も権限を持たない状態なので、権限を後から付け加えていく
まとめ
初め、以下のような状態になっていました。
- MariaDBに誰でもアクセスできるようになってた
- phpMyAdminにも誰でもアクセスできてた
今回の設定で、以下のような状態に変更しました。
- MariaDBにパスワードを設定して、入力がないとアクセスできないようになった
- phpMyAdminにログインする際、認証するようになった
- rootではなく一般ユーザからログインするようになった
現場では、ユーザを追加して使うことが一般的です。
覚えておくと役立ちますよ!👍
次におすすめ
次は、ターミナル上でDBを操作してみます!