2
1

はじめに

AWSでDBを使用したい!となった場合にRDSを使用することが多いかと思います。
ですが今回EC2にDBを構築しGUI操作をしたので、備忘録として記事にしてみました。
初学者なので、間違っているところがあればご指摘ください…!

使用したもの

・AWS EC2(AmazonLinux2023)
・MySQL
・MySQL-Workbench(MySQLのGUIツール)

全体の流れ

  1. EC2にMySQLリポジトリとMySQLサーバーをインストール
  2. EC2のMySQLにrootユーザーでアクセスし、操作するユーザーを作成
  3. EC2のセキュリティグループにポート3306を追加
  4. WorkbenchでEC2のMySQLに接続できるコネクションを作成

EC2にMySQLをインストール

EC2にSSH接続し、使用するバージョンの「MySQLリポジトリ」を追加し「MySQLサーバー」をインストールします。

まずはローカルリポジトリをyumでダウンロード。リポジトリのURLは公式にあります。
https://dev.mysql.com/downloads/repo/yum/
使用しているプラットフォームによってURLが変わるので注意!
(dnf 対応システムの場合、コマンドの yum を dnf に置き換えます)

sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-9.noarch.rpm

yumリポジトリは、デフォルトで最新のバージョンがインストールされるよう設定されているので、特定のバージョンをインストールしたい場合は追加設定が必要!
詳しくは公式マニュアルに記載されています。
https://dev.mysql.com/doc/refman/8.0/ja/linux-installation-yum-repo.html

リポジトリがダウンロードできたら、MySQLをインストールします!

sudo yum install mysql-community-server

GPG キーが古いか無いと怒られてインストールできなかった場合は、最新のGPG キーをインポートしてからインストールします。
私がバージョン5.7をインストールしたときは、2022年のキーも必要でした…。

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

インストールが終わったら、念のためインストールできているか確認します。
下のコマンドでインストールしたバージョンが表示されればOKです!

mysqld -version

MySQLにrootユーザーでログインし新ユーザーを作成

最初から作成されているrootユーザーでMySQLにログインします。

初期パスワードはMySQLのlogに記載されているので確認。

sudo cat /var/log/mysqld.log

確認できたらログインします。下のコマンドを打つとパスワードを要求されるので入力。
※パスワードを打っても画面には表示されません!

mysql -u root -p

ログインできたらrootユーザーのパスワードを変更します。
※パスワードを変更しないと警告が出て、なにもできません!

SET PASSWORD = 'new_password';

次に新しいユーザーを作成します。
複数のホストでログインする場合は、同じ名前のユーザーをホスト名だけ変え、複数作成します。
※同じユーザー名であればホスト名が違っても、テーブルは同じものを共有できます。

今回は自分のPCのWorkbench用とlocalhost用で、同じ名前のユーザーを2つ作成しました。
同時に権限も付与します。

-- 特定のIPアドレスからの接続を許可(例: 203.0.113.0)
CREATE USER 'onigiri'@'203.0.113.0' IDENTIFIED BY 'your_password';

--locallhostからの接続を許可
CREATE USER 'onigiri'@'locallhost' IDENTIFIED BY 'your_password';

-- 必要な権限を付与
GRANT ALL PRIVILEGES ON your_database.* TO 'onigiri'@'203.0.113.0';
GRANT ALL PRIVILEGES ON your_database.* TO 'onigiri'@'locallhost';

-- 権限を反映
FLUSH PRIVILEGES;

-- 作成済みユーザーを確認
select user, host from mysql.user;

ホスト名に「%(ワイルドカード)」を使用する場合、すべてのIPアドレスから接続を許可できますが「localhost」は含まれないので注意!

-- すべてのIPアドレスからの接続を許可
CREATE USER 'your_username'@'%' IDENTIFIED BY 'your_password';

続いてEC2のMySQLをWorkbenchで操作する為に必要な設定をしていきます。

MySQLのデフォルト設定では、localhost以外からの接続を受け付けない設定になっています。なので、自分のPCのWorkbenchで操作するには、他からの接続を許可する設定が必要!

その設定方法ですが、MySQLの設定ファイルをviなどで開き、ある文を追加します。

#スーパーユーザーの権限で”/etc”にあるMySQLの設定ファイル”my.cnf”を編集
sudo su 
cd /etc(/mysql)
vi my.cnf

#mysqldセクションに以下を追加、今回は全てのIPからの接続を許可
bind-address = 0.0.0.0

#設定を反映させるため再起動
sudo service mysql restart

これでMySQL側の設定は終了です!

EC2のセキュリティグループにポート3306追加

続いて、EC2のセキュリティグループの設定をしていきます。

セキュリティグループのインバウンドルールを追加します。
タイプ「MySQL」を選択し、ソースに「自分のPC(Workbenchを操作する機器)のIP」を指定します。
※ソースのタブで「マイIP」を選択すると現在使っている機器のIPを指定してくれます。

Untitled.png

EC2の設定も終了しました!次が最後です!

Workbenchから接続できるようにする

最後にWorkbenchの設定に入ります!

EC2のMySQLに接続する用の新しいコネクションを作成します。

Untitled1.png

  • Connection Name(接続名): 任意の名前
  • Connection Method(接続タイプ): 「Standard」でOK
  • Hostname(ホスト名): EC2のパブリックIPアドレスまたはDNS名、固定IPなど
  • Port(ポート番号): 3306(MySQLのデフォルトポート)
  • Username(ユーザー名): EC2のMySQLで作成したユーザー名(@以降は不要)
  • Password(パスワード):なにも押さない!上で指定したユーザーのパスワードだがこの欄では設定不要

すべて入力後、テスト接続を押し、不備がなければ指定したMySQLユーザーのパスワードを求められるので入力!
無事に接続できたら完了です!

EC2のパブリックIPは、固定IPを取得しない限り毎回変わります。そのためIPを固定していない時は、Workbenchのコネクションで設定したEC2のホスト名も毎回変更する必要があります!

おわりに

初めて記事を書きましたが、自分の中の知識を分かりやすくまとめるのは、とても勉強になりました。ニッチな記事ですが、誰かの役に立てたら嬉しいです!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1