この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、森田です。
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を構築する際にはプライベートサブネットの中に置き、クラウド外部に通信を出さないように接続するべきです。