🖥️

EC2にMySQLを構築する手順(Laravel)

に公開

この記事では、EC2にDB(MySQL)を構築し、Laravelアプリケーションから接続・利用できるように設定する手順を解説します。

EC2にLaravelを構築する手順については、別記事でまとめているので参考ください。
https://zenn.dev/morikuma/articles/bb4f6201d83d67

構成

使用技術

  • EC2 (Amazon Linux 2023 AMI)
  • Webサーバー:Nginx(1.26.3)
  • PHP: 8.4
  • Laravel: 12.0
  • MySQL: 8系

DB(MySQL)

EC2(Amazon Linux 2023)に MySQL をインストールします。
今回は、アプリやシステム開発でよく使われる MySQL 8.0 を選択します。

MySQLのインストール

SSH接続でEC2へログインします。

1.MySQLの公式リポジトリ追加

Amazon Linux 2023 には標準で MySQL リポジトリが含まれていないため、まず公式リポジトリを追加

sudo yum install https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm

リポジトリが追加されたか確認

ls /etc/yum.repos.d/ | grep mysql

表示例)

mysql-community-debuginfo.repo
mysql-community-source.repo
mysql-community.repo

2.GPG署名キーのインポート(※2023年の新しいキー)

既にインポートされている、MySQL 2022年の署名キーは期限切れのため、新しい2023年の署名キーをインポートします。

sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023

3.YUMリポジトリのGPGキー設定を修正

設定ファイルを開いて

sudo vim /etc/yum.repos.d/mysql-community.repo
#[mysql80-community]
#[mysql-connectors-community]
#[mysql-tools-community]
#[mysql-cluster-8.0-community]
👇️
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2023 👈️2022の部分を2023へ修正

4.キャッシュをクリアして反映

sudo yum clean all
sudo yum makecache

5.MySQLをインストール

sudo yum install -y mysql-community-server

確認のためmysql --versionを実行し、以下のように出力されていれば設定できています

MySQLの設定

次にMySQLを起動。
※ついでに自動起動も有効化へ

1.起動

sudo systemctl start mysqld #①
sudo systemctl enable mysqld #②
sudo systemctl status mysqld #③

①でMySQLを起動し、②で自動起動を有効化しました。EC2は再起動したとき、デフォルトでMySQLは立ち上がらないのですが、「有効」にすると同時にMySQLも起動します。
③でMySQLの状況を確認します。
以下のようになっていればOKです

2.ユーザー設定

mysqlにログインするために、rootユーザーの初期パスワードを確認します

# 初期パスワードの確認
sudo grep 'temporary password' /var/log/mysqld.log

末尾に出たものがパスワードとなります。

# ログイン
mysql -u root -p

ログインパスワードは、先ほど確認した初期パスワードを使ってログインします。
これでログインできるようになりましたが、この時点では「root(管理者)ユーザー」でログインしているため、このまま root を使い続けるのはセキュリティ上よくありません。
rootはすべての権限を持っているため、万が一不正アクセスされると影響が大きいからです。
まずrootの初期パスワードを変更しておきます

# rootユーザーの初期パスワード変更
ALTER USER 'root'@'localhost' IDENTIFIED BY '新しいパスワード';

次に、権限の影響を小さくするために作業用ユーザー(例:laravel_user)を新しく作成します。

# 新たなユーザーを作成
CREATE USER 'laravel_user'@'%' IDENTIFIED BY 'パスワード';

# 新たなユーザーに権限を与える
GRANT ALL PRIVILEGES ON [データベース名].* TO 'laravel_user'@'%';
#GRANT ALL PRIVILEGES ON laravel12_test.* TO 'laravel_user'@'%';

# 作成されたユーザーの権限確認
show grants for '[データベース名]'@'%';
#show grants for 'laravel_user'@'%';


これで新たなユーザー作成と権限を設定できました。

Laravelの設定

.envファイル

vim .env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=[DB名] # 作成したデータベース名
DB_USERNAME=[ユーザー名] # 作成したユーザー名
DB_PASSWORD=[パスワード] # 作成したユーザーのパスワード

3.マイグレーション実行

最後にマイグレーションを実行します

php artisan migrate


設定は以上となります

【参考】DBクライアントツールでSSH接続する場合

例)以下の設定でDBエンドポイントへアクセス可能となる

まとめ

今回は、EC2サーバーにDBをセットアップしました。

この記事が、少しでも皆さんのお役に立てれば嬉しいです。

🔗 参考記事

■EC2にLaravelを構築
https://zenn.dev/morikuma/articles/bb4f6201d83d67

Discussion