【連載第3回】データベース「MariaDB」を構築しよう!投稿データを保存する仕組み

LAMP講座

【連載第3回】Webアプリの脳みそ「データベース(MariaDB)」を構築する

未経験からWebアプリ開発を目指す「AlmaLinux 9とLAMP環境で作る!Webアプリ開発完全ロードマップ(全12回)」の第3回です。

前回は、Webサーバー(Apache)を構築し、ブラウザでトップページを表示させることに成功しました。
しかし、今のままでは「あらかじめ書いた文字(HTML)」を表示することしかできません。

今回は、ユーザーが投稿した写真やコメント、会員情報などの「変化するデータ」を保存するための箱、「データベース(MariaDB)」をインストールします。

コウ君

先生、データベースってExcelみたいなものですか?
テキストファイルに保存するんじゃダメなんですか?

リナックス先生

良い質問ね。
数人のデータならテキストファイルでもいいけど、もし100万人が同時にアクセスしたらどうなると思う?
ファイルの書き込み待ちでサイトが止まってしまうわ。
データベースは、大量のデータを高速かつ安全に整理整頓してくれる「Webアプリの心臓部」なのよ。

本講座のカリキュラム(全12回)

現在地は第3回です。

  1. サーバー準備編:なぜVPSが必要?AlmaLinux 9の初期設定とSSH接続
  2. Webサーバー編:Apache(httpd)のインストールとファイアウォール設定
  3. 【今回】データベース編:MariaDB(MySQL)のインストールとセキュリティ設定
  4. プログラミング言語編:PHP 8.xの導入と設定ファイルのチューニング
  5. 権限・パーミッション編:LinuxでWebサイトを公開するための「所有者」の概念
  6. 接続テスト編:PHPからデータベース(DB)に接続してみよう
  7. アプリ開発①:HTML/CSSで掲示板の「見た目」を作る
  8. アプリ開発③:投稿機能(Create)の実装とデータの保存
  9. アプリ開発③:一覧表示機能(Read)と画像表示の仕組み
  10. アプリ開発④:編集・削除機能(Update/Delete)の実装
  11. セキュリティ編:XSSやSQLインジェクション対策の基礎
  12. 公開編:独自ドメイン設定と無料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

【2026年最新】Linuxサーバー構築におすすめのVPS比較3選!現役エンジニアが速度とコスパで厳選
Linuxの勉強、まだ「自分のPC」でやって消耗していませんか?「Linuxを覚えたいけど、環境構築でエラーが出て先に進めない…」「VirtualBoxを入れたらパソコンが重くなった…」これは、Linux学習を始める9割の人がぶつかる壁です...

コメント