SAA学習-EC2-MySQLサーバーを設定する
今回のテーマ:MySQLサーバーを設定する
今回の概要図:
RDBはセキュリティの観点よりプライベートサブネットに実装することが推奨です。
また、ソフトウェアの更新をインターネット経由で実施するため、
NATゲートウェイをパブリックサブネットに設置しプライベートサブネットからのルーティング設定が必要です。
- 構成パータン:
① パブリックサブネットのWEBサーバーにDBサーバーのソフトを同居する
② パブリックサブネットとプライベートサブネットに1台ずつEC2を立てて各々ソフトウェアを導入する
③ パブリックサブネットにEC2、プライベートサブネットRDSを立ててEC2にWEBサーバーのソフトウェアを導入する
- サンプル事例など
①の場合、検証環境を実装やセキュリティ的にリスクを許容できる場合で採用
②の場合、DBへのアクセス面でセキュリティ的制御や特殊なDBパラメータを設定が必要な場合で採用
③の場合、実務上はこの構成がよく採用
cf)WEBサーバーとDBサーバーの機能を分ける構成がよく採用されますが、冗長化のしやすさや構造単一点を抑止する狙いとなります。
AWSの管理するサービスの違い
AWSのサービスにはアンマネージド型とマネージド側が存在します。
サービス種別 | 利用サービス | 管理概要 |
---|---|---|
アンマネージド型 | EC2 | ユーザー側で管理作業をする |
マネージド型 | RDS | 管理作業はAWS側で実装してくれる |
実装時に使用するLinuxコマンド群
yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm -y
yum install mysql-community-server -y
systemctl start mysqld
systemctl enable mysqld
cat /var/log/mysqld.log | grep localhost
mysql –u root -p
MySQLコマンド群
ALTER USER root@localhost IDENTIFIED BY ‘パスワード’;
create database udemy;
show databases;
DBサーバーの実装
DBサーバインスタンス作成時については留意点のみで記載します。
- OSはAmazonLinux
- インスタンスタイプはt2.micro
- VPCはプライベートサブネット
- ストレージはデフォルトのまま
- タグはNameをDB-SV-1a
- セキュリティグループは以下のようにします。
VPCからNATゲートウェイを再度作成し、ルートテーブルを設定
NATゲートウェイのおおよその概算料金:3000円/1月程度発生するため、検証時で使用する場合は無難です。
実装方法については過去掲載の以下を参照ください。
AWS認定学習記録-VPC-NATゲートウェイ - おっさん社内SEエンジニアの勉強ブログ
DBサーバへ接続後各種設定の対応
- SSHでWEBサーバーへログイン
- キーペアの作成
コマンド:
touch (キーペアファイル名).pem vim (キーペアファイル名).pem
- キーペア権限変更
コマンド:
chmod 400 (キーペアファイル名).pem;ls -l
- DBサーバーへ接続
コマンド:
ssh (DBサーバーのプライベートIP) -i (キーペアファイル名).pem
- パッケージのアップデート
コマンド:
sudu su - yum update -y
- MySQL関連パッケージのインストール
コマンド:
yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm -y
結果:
Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: mysql80-community-release noarch el7-1 /mysql80-community-release-el7-1.noarch 31 k Transaction Summary ================================================================================ Install 1 Package Total size: 31 k Installed size: 31 k Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : mysql80-community-release-el7-1.noarch 1/1 Verifying : mysql80-community-release-el7-1.noarch 1/1 Installed: mysql80-community-release.noarch 0:el7-1 Complete!
- MySQL本体のインストール
コマンド:
yum install mysql-community-server -y
結果:
Transaction Summary ================================================================================ Install 3 Packages (+4 Dependent packages) Total download size: 573 M Downloading packages: warning: /var/cache/yum/x86_64/2/mysql80-community/packages/mysql-community-client-plugins-8.0.23-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY Public key for mysql-community-client-plugins-8.0.23-1.el7.x86_64.rpm is not installed (1/7): mysql-community-client-plugins-8.0.23-1.el7.x86_64. | 237 kB 00:00 (2/7): mysql-community-common-8.0.23-1.el7.x86_64.rpm | 621 kB 00:00 (3/7): mysql-community-libs-8.0.23-1.el7.x86_64.rpm | 4.6 MB 00:00 (4/7): mysql-community-libs-compat-8.0.23-1.el7.x86_64.rpm | 1.2 MB 00:00 (5/7): ncurses-compat-libs-6.0-8.20170212.amzn2.1.3.x86_64 | 308 kB 00:00 (6/7): mysql-community-client-8.0.23-1.el7.x86_64.rpm | 48 MB 00:00 (7/7): mysql-community-server-8.0.23-1.el7.x86_64.rpm | 518 MB 00:15 -------------------------------------------------------------------------------- Total 37 MB/s | 573 MB 00:15 Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql Importing GPG key 0x5072E1F5: Userid : "MySQL Release Engineering <mysql-build@oss.oracle.com>" Fingerprint: a4a9 4068 76fc bd3c 4567 70c8 8c71 8d3b 5072 e1f5 Package : mysql80-community-release-el7-1.noarch (installed) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : mysql-community-common-8.0.23-1.el7.x86_64 1/8 Installing : mysql-community-client-plugins-8.0.23-1.el7.x86_64 2/8 Installing : mysql-community-libs-8.0.23-1.el7.x86_64 3/8 Installing : ncurses-compat-libs-6.0-8.20170212.amzn2.1.3.x86_64 4/8 Installing : mysql-community-client-8.0.23-1.el7.x86_64 5/8 Installing : mysql-community-server-8.0.23-1.el7.x86_64 6/8 Installing : mysql-community-libs-compat-8.0.23-1.el7.x86_64 7/8 Erasing : 1:mariadb-libs-5.5.68-1.amzn2.x86_64 8/8 Verifying : ncurses-compat-libs-6.0-8.20170212.amzn2.1.3.x86_64 1/8 Verifying : mysql-community-client-8.0.23-1.el7.x86_64 2/8 Verifying : mysql-community-libs-compat-8.0.23-1.el7.x86_64 3/8 Verifying : mysql-community-libs-8.0.23-1.el7.x86_64 4/8 Verifying : mysql-community-client-plugins-8.0.23-1.el7.x86_64 5/8 Verifying : mysql-community-server-8.0.23-1.el7.x86_64 6/8 Verifying : mysql-community-common-8.0.23-1.el7.x86_64 7/8 Verifying : 1:mariadb-libs-5.5.68-1.amzn2.x86_64 8/8 Installed: mysql-community-libs.x86_64 0:8.0.23-1.el7 mysql-community-libs-compat.x86_64 0:8.0.23-1.el7 mysql-community-server.x86_64 0:8.0.23-1.el7 Dependency Installed: mysql-community-client.x86_64 0:8.0.23-1.el7 mysql-community-client-plugins.x86_64 0:8.0.23-1.el7 mysql-community-common.x86_64 0:8.0.23-1.el7 ncurses-compat-libs.x86_64 0:6.0-8.20170212.amzn2.1.3 Replaced: mariadb-libs.x86_64 1:5.5.68-1.amzn2 Complete!
- MySQLサービスの起動
コマンド:
systemctl start mysqld
結果はエラーがないこと
systemctl enable mysqld
結果はエラーがないこと
- MySQLの起動ログの確認(初期パスワードの確認)
コマンド:
cat /var/log/mysqld.log | grep localhost
結果:
2021-03-29T04:59:17.588062Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: gpZgI0es05*C
- MySQLへ接続
コマンド:
mysql -u root -p
結果:
Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 8.0.23 Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
- MySQLのパスワード変更(パスワードの文字列は、英数字、大文字小文字、記号を1つ含む必要があります。)
コマンド:
ALTER USER root@localhost IDENTIFIED BY 'パスワード';
失敗例:
mysql> ALTER USER root@localhost IDENTIFIED BY 'test123'; ERROR 1819 (HY000): Your password does not satisfy the current policy requirements mysql>
成功例:
mysql> ALTER USER root@localhost IDENTIFIED BY 'gpZgI0es05*C'; Query OK, 0 rows affected (0.00 sec) mysql>
- DBの作成
コマンド
create database (データベース名);
成功例:
mysql> create database testdb; Query OK, 1 row affected (0.01 sec) mysql>
- DBの作成後の確認
コマンド:
show databases;
結果例:
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | testdb | +--------------------+ 5 rows in set (0.01 sec) mysql>
検証確認後、NATゲートウェイ、ElasticIPの開放を実施します。
今回のテーマは以上です。