System.out.println("Java学習中");

【Java / Spring Boot】UI/UXの視点を活かしたバックエンド開発の学習ポートフォリオ

【AWSデプロイ奮闘記:第5回】EC2へMySQLをインストールして初期設定する

Adobe Fireflyで作成

🗺️ はじめに

前回の記事では、AWS上のサーバー(EC2)Javaエンジンを搬入し、アプリを動かすための土台を整えました。

📝 前回の記事はこちら 👇

blog.kenichikamoi.com

今回は

データベース(MySQL)のインストールと初期設定

を行っていきます。

いつも通り、PCの黒い画面(ターミナルやPowerShell)からEC2サーバーSSH接続(潜入)した状態からスタートしていきましょう。

📦 MySQLの仕入れと搬入(インストール)

ステップ1:MySQLの「仕入れ先」を登録する

最新のAmazon Linux 2023には、デフォルトの棚にMySQLが置かれていません。

そのため、まずは「ここにMySQLの正規品が置いてあるよ」という公式の仕入れ先(リポジトリ)を登録します。

以下のコマンドをコピーしてターミナルに貼り付け、Enterを押してください。

ステップ2:MySQLをインストールする

仕入れ先の登録ができたら、いよいよMySQL本体をダウンロードしてインストールします。

sudo dnf install -y mysql-community-server

🚨 もし「Error: GPG check FAILED」と出たら?

文字が流れてインストールが完了する……と思いきや、ここで「Error: GPG check FAILED」が表示される方が多いかもしれません。

MySQL公式の『通行証の期限切れ(署名エラー)』によるセキュリティブロック

です。

Linuxの世界では、怪しい偽物のウイルスソフトを勝手にインストールしないよう、

ダウンロードしたファイルが「本当にMySQL公式が作った本物かどうか」をチェックするセキュリティ機能(GPGチェック)

が働いています。

ただ、MySQLの公式側が「新しい本物の証明書の鍵」を配布しているのですが、今回ステップ1で登録した仕入れ先情報の中に、古い証明書の情報が少し混ざってしまっていたため、

公式のサインが、手元の古い名簿と一致しないから、搬入をストップする!

と超生真面目にブロックしてしまったのが原因です🛡️

今回は、間違いなく公式URLから仕入れていることが100%分かっているため、以下の「オプション(--nogpgcheck)」をつけて、GPGチェック(サイン確認)をパスして強制搬入しましょう。

sudo dnf install -y mysql-community-server --nogpgcheck

文字がズラズラッと流れて、一番最後に Complete! と表示されれば成功です。


🔌 MySQLの電源ONと自動化

段ボールから出したばかりのMySQLは、まだ電源が切れています。

以下の2つのコマンドを順番に打って、MySQLを起動させ、

サーバーが再起動したときも自動でONになってね

という予約をします。

# 1. MySQLの電源をONにする
sudo systemctl start mysqld

# 2. サーバー起動時に自動でONになるよう予約する
sudo systemctl enable mysqld

🕵️‍♂️ 初期パスワードの確認

MySQLは起動した瞬間、安全のために「仮の初期パスワード」を自動生成して、ログファイルにこっそり書き込みます。

以下のコマンドを使って、初期パスワードを確認しましょう。

sudo grep 'temporary password' /var/log/mysqld.log

コマンドを打つと、画面に root@localhost: ×××× という形で、暗号のような文字列が表示されます。

このコロンの右側初期パスワードです。

この部分をコピーしておいてください。


🛡️ 鍵の変更とセキュリティ設定

仮のパスワードのままだと危険なので、本番用のパスワードに変更し、不要なテスト設定を削除します。

以下の設定コマンドを打ちます。

sudo mysql_secure_installation

コマンドを打つと、英語でいくつか質問されます。

以下の手順で進めてください。

🔹Enter password for user root:
👉 さっきコピーした初期パスワードを貼り付けてEnterを押します。
(※セキュリティ上、文字を打っても画面には何も表示されませんが、裏でちゃんと入力されています)

🔹VALIDATE PASSWORD COMPONENT... (パスワード強度チェック機能を有効にするか?)
👉 個人開発環境なので複雑なルールに縛られないよう、N を入力してEnter。

🔹New password:
👉 あなたがこれから使う、新しい強力なパスワードを入力してEnter。

🔹Re-enter new password:
👉 もう一度同じパスワードを入力してEnter。

🤔 Change the password for root ? の謎

ここで、

「さっき新しいパスワードを入力したのに、なんでまたパスワードを変更するの?」

と不思議に思うメッセージが出ます。

実はこれ、MySQLが裏側で

「あなたが入力したパスワードは強度100点満点だね!」

自動審査を行い、

「審査が終わったけど、本当にこのパスワードで確定(変更)して登録しちゃっていいよね?」

最終確認のハンコを求めている状態です。

迷わず y(または Y)を入力してEnterを押してください。

この後は、セキュリティを高めるための質問が続きます。

すべて y ➔ Enter で一気に駆け抜けましょう。

🔹Remove anonymous users?(匿名ユーザーを消す?) ➔ y

🔹Disallow root login remotely?(外部からの直接接続を禁止する?) ➔ y
(※今回はEC2の中からしか触らないので安全のためにYesにします)

🔹Remove test database?(テスト用DBを消す?) ➔ y

🔹Reload privilege tables now?(設定を今すぐ反映する?) ➔ y

最後に All done! と表示されれば、MySQLの設置と鍵の付け替えは完了です。


✍️ おわりに

これで、あなたのEC2サーバーには

「Javaのエンジン」と「MySQL」

という、Webアプリを動かすための2大巨頭が揃いました。

次回は、手元のPCからアプリの「ソースコード」をこのサーバーに持ち込み、組み立て(ビルド)を行って、24時間営業のお店としてオープンさせます。

デプロイ完了まであと少しです。

最後までお読みいただき、ありがとうございました🙇‍♂️


【プロフィール・作品置き場】

kenichikamoi.com


🎵 Youtube(楽曲一覧)はこちら

www.youtube.com