RDB on EC2 に外部接続してみた
こんにちは、森田です。
AWSの公式ドキュメントでLAMPのチュートリアルがありますが、今回はこのとき作成したRDBを外部から接続できるようにしてみました。
前提
この通り進めた後の操作になります。
上の作業進めるの大変!って思った方は下記のユーザデータを使用してください。
mysqladmin password XXXXXXXX
のXXXXXXXX
はパスワードになりますので適宜変更してください。
#!/bin/bash yum update -y # amazon-linux-extrasを使用して Maria DB php をインストール amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2 # mariadb-server , Apacheのインストール yum install -y httpd mariadb-server systemctl start httpd systemctl enable httpd # ファイルの所有権、権限を変更 usermod -a -G apache ec2-user chown -R ec2-user:apache /var/www chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \; find /var/www -type f -exec sudo chmod 0664 {} \; # PHPの動作確認ファイル生成 echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php # Maria DB 起動、設定 systemctl start mariadb mysqladmin password XXXXXXXX # 依存ライブラリインストール yum install php-mbstring php-xml -y # 各サービスの再起動 systemctl restart httpd systemctl restart php-fpm # phpAdminダウンロード、インストール wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz mkdir /var/www/html/phpMyAdmin && tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C /var/www/html/phpMyAdmin --strip-components 1 rm phpMyAdmin-latest-all-languages.tar.gz # Maria DB 起動 systemctl start mariadb
【コンソールでの操作】セキュリティグループの変更
チュートリアルの通り進めていますと、3306
のポートは空いておりませんので下記のように変更します。
【EC2上での操作】ユーザの作成
まずは、rootユーザでログインします。 パスワードが求められますが、先ほどユーザデータで記述したものを入力します。
mysql -u root -p
続いて、リモートログイン用のユーザを作成します。
CREATE USER 'user'@'%' IDENTIFIED BY 'XXXXXX'; GRANT ALL ON *.* TO 'user'@'%';
SELECT User, Host FROM mysql.user;
でユーザが正常に作成できるているかを確認します。
【ローカルPCでの操作】外部接続
RDB on EC2にローカルPCより接続します。Macより行うためbrew
でmysqlをインストールを行いました。
インストール後、下記のコマンドを実行します。
mysql -u user -p -h パブリックIP
パスワードが求められますので、先ほど設定したパスワードを入力すると以下のようにアクセスできます。
気付き
外部公開について調べていたところ、firewall-cmd
についても設定すべきかと悩みましたが、設定なしで良さそうです。
EC2では、セキュリティグループとネットワークACLでアクセス制限を行なっておりますのでfirewall-cmd
でも設定しまうと重複してしまいます。
以下が非常に分かりやすかったです。
最後に
今回は、RDB on EC2を行いましたが、基本はRDSを検討すべきであり、実際の用途ではなさそうです。
仮に、RDB on EC2を構築する際にはプライベートサブネットの中に置き、クラウド外部に通信を出さないように接続するべきです。