はじめに
AWSでDBを使用したい!となった場合にRDSを使用することが多いかと思います。
ですが今回EC2にDBを構築しGUI操作をしたので、備忘録として記事にしてみました。
初学者なので、間違っているところがあればご指摘ください…!
使用したもの
・AWS EC2(AmazonLinux2023)
・MySQL
・MySQL-Workbench(MySQLのGUIツール)
全体の流れ
- EC2にMySQLリポジトリとMySQLサーバーをインストール
- EC2のMySQLにrootユーザーでアクセスし、操作するユーザーを作成
- EC2のセキュリティグループにポート3306を追加
- 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を指定してくれます。
EC2の設定も終了しました!次が最後です!
Workbenchから接続できるようにする
最後にWorkbenchの設定に入ります!
EC2のMySQLに接続する用の新しいコネクションを作成します。
- 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のホスト名も毎回変更する必要があります!
おわりに
初めて記事を書きましたが、自分の中の知識を分かりやすくまとめるのは、とても勉強になりました。ニッチな記事ですが、誰かの役に立てたら嬉しいです!