EC2にMySQLを構築する手順(Laravel)
この記事では、EC2にDB(MySQL)を構築し、Laravelアプリケーションから接続・利用できるように設定する手順を解説します。
EC2にLaravelを構築する手順については、別記事でまとめているので参考ください。
構成
使用技術
- 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を構築
Discussion