【連載第3回】Webアプリの脳みそ「データベース(MariaDB)」を構築する
未経験からWebアプリ開発を目指す「AlmaLinux 9とLAMP環境で作る!Webアプリ開発完全ロードマップ(全12回)」の第3回です。
前回は、Webサーバー(Apache)を構築し、ブラウザでトップページを表示させることに成功しました。
しかし、今のままでは「あらかじめ書いた文字(HTML)」を表示することしかできません。
今回は、ユーザーが投稿した写真やコメント、会員情報などの「変化するデータ」を保存するための箱、「データベース(MariaDB)」をインストールします。
先生、データベースってExcelみたいなものですか?
テキストファイルに保存するんじゃダメなんですか?
良い質問ね。
数人のデータならテキストファイルでもいいけど、もし100万人が同時にアクセスしたらどうなると思う?
ファイルの書き込み待ちでサイトが止まってしまうわ。
データベースは、大量のデータを高速かつ安全に整理整頓してくれる「Webアプリの心臓部」なのよ。
本講座のカリキュラム(全12回)
現在地は第3回です。
- サーバー準備編:なぜVPSが必要?AlmaLinux 9の初期設定とSSH接続
- Webサーバー編:Apache(httpd)のインストールとファイアウォール設定
- 【今回】データベース編:MariaDB(MySQL)のインストールとセキュリティ設定
- プログラミング言語編:PHP 8.xの導入と設定ファイルのチューニング
- 権限・パーミッション編:LinuxでWebサイトを公開するための「所有者」の概念
- 接続テスト編:PHPからデータベース(DB)に接続してみよう
- アプリ開発①:HTML/CSSで掲示板の「見た目」を作る
- アプリ開発③:投稿機能(Create)の実装とデータの保存
- アプリ開発③:一覧表示機能(Read)と画像表示の仕組み
- アプリ開発④:編集・削除機能(Update/Delete)の実装
- セキュリティ編:XSSやSQLインジェクション対策の基礎
- 公開編:独自ドメイン設定と無料SSL(Let’s Encrypt)でHTTPS化
MariaDB(マリア・ディー・ビー)とは?
LAMP環境の「M」は、本来「MySQL」を指していましたが、現在は「MariaDB」が主流です。
これは、MySQLの開発者が作った「MySQLと完全に互換性のある兄弟(派生版)」です。
AlmaLinux(RHEL系)では、標準のデータベースとしてMariaDBが採用されています。
「MySQLを勉強したい」という人も、中身やコマンドは99%同じなので安心してください。
手順1:MariaDBをインストールする
SSHでサーバーに接続し、以下のコマンドを入力します。
※サーバー本体(server)と、操作用ツール(client)の両方をインストールします。
dnf install mariadb-server mariadb -y
手順2:起動と自動起動設定
Apacheの時と同じように、インストールしただけでは動いていません。
起動(start)と自動起動(enable)の呪文を唱えます。
systemctl start mariadb systemctl enable mariadb
正しく動いているか確認してみましょう。
systemctl status mariadb
緑色の文字で Active: active (running) と出ていれば成功です。
(q キーを押して元の画面に戻ります)
手順3:初期セキュリティ設定(最重要)
インストール直後のデータベースは、パスワードが設定されていなかったり、テスト用の不要なデータが入っていたりと、セキュリティがガバガバの状態です。
これを修正するための専用ツールを実行します。
mysql_secure_installation
ここからは、画面に英語の質問が表示され、対話形式で進みます。
初心者が一番迷うポイントですので、一つずつ解説します。
1. 現在のパスワード確認
Enter current password for root (enter for none):
「今のrootパスワードを入れて」と言われていますが、まだ設定していないので何も入力せずに「Enterキー」を押してください。
2. unix_socket認証への切り替え
Switch to unix_socket authentication [Y/n]
「パスワードの代わりに、OSのログイン情報を使って認証しますか?」という質問です。
今回は学習用にパスワード認証を使いたいので、n と入力してEnterを押してください。
3. rootパスワードの設定
Change the root password? [Y/n]
「データベースの管理者(root)パスワードを設定しますか?」Y(Yes)と入力してEnter。
その後、新しいパスワードを2回入力します(画面には表示されません)。忘れないようにメモしてください!
4. その他のセキュリティ削除
ここからは、基本的にすべて「Y(はい、削除してください)」で答えるのが鉄則です。
Remove anonymous users? [Y/n]
→ Y (匿名ユーザーを削除)Disallow root login remotely? [Y/n]
→ Y (外部からの管理者ログインを禁止)Remove test database and access to it? [Y/n]
→ Y (テスト用データベースを削除)Reload privilege tables now? [Y/n]
→ Y (設定を今すぐ反映)
Thanks for using MariaDB! と表示されれば完了です。
手順4:アプリ用のデータベースを作る
設定おわりました!
これで終わりですか?
まだよ。
今やったのは「倉庫の鍵をかけた」だけ。
これからアプリで使うための「専用の箱(データベース)」と「専用の担当者(ユーザー)」を作っておきましょう。
普段の作業で何でもできるrootを使うのは危険だからね。
1. データベースにログインする
mysql -u root -p
さきほど設定したパスワードを入力すると、プロンプトが MariaDB [(none)]> に変わります。
ここはもうLinuxではなく、データベースの世界です。SQL(エスキューエル)という言語を使います。
2. データベースとユーザーの作成
以下の3行のSQLコマンドを順番に入力してください。
(※最後の ; セミコロンを忘れないように!)
CREATE DATABASE app_db; CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'password123'; GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'localhost';
コマンドの意味:
CREATE DATABASE...: 「app_db」という名前の空のデータベースを作成。CREATE USER...: 「app_user」というユーザーを作成。パスワードは「password123」。
※本番ではもっと難しいパスワードにしてください!GRANT ALL...: app_userに対して、app_dbの中身を操作する全権限を与える。
最後に exit と入力して、元のLinux画面に戻ります。
次回予告:PHPを入れてDBを操作しよう
これで「Webサーバー(Apache)」と「データベース(MariaDB)」が揃いました。
しかし、この2つはまだ連携していません。お互いに独立して動いているだけです。
次回は、この2つを繋ぐ接着剤となるプログラミング言語「PHP(ピー・エイチ・ピー)」をインストールします。
いよいよ本格的なプログラミングの準備が整いますよ!
今回作った「データベース名」「ユーザー名」「パスワード」は、次回のPHPの設定で必ず使うから、絶対に忘れないようにメモしておいてね!
ここを忘れると、次回は最初からやり直しになるわよ。
▼この講座で使用している推奨VPS


コメント