おっさん社内SEエンジニアの勉強ブログ

勉強記録のブログとなります。

SAA学習-EC2-MySQLサーバーを設定する

今回のテーマ:MySQLサーバーを設定する

今回の概要図:

f:id:In-houseSE:20210329112148p:plain

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サーバーの実装

f:id:In-houseSE:20210329132853p:plain

DBサーバインスタンス作成時については留意点のみで記載します。

  • OSはAmazonLinux
  • インスタンスタイプはt2.micro
  • VPCはプライベートサブネット
  • ストレージはデフォルトのまま
  • タグはNameをDB-SV-1a
  • セキュリティグループは以下のようにします。

f:id:In-houseSE:20210329133343p:plain

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 -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の開放を実施します。

今回のテーマは以上です。