こんぶにのブログ

エンジニアという職業を通して学んだことを発信するブログです。

AWS RDSとEC2で動いてるCakePHPアプリを接続してみた

DBインスタンスの作成に関してはこちらを参考にした。
docs.aws.amazon.com ただし、DBを暗号化するとKMSが作成されてしまうことに注意。KMSは存在するだけでお金がかかる。(被害済)
私の場合はWebサーバーはnginxなのでDBインスタンス作成以降は関係なし。

EC2にmysqlをインストール

上記で諸々のセットアップをしたあと、以下のコマンドでmysqlクライアントをインストール。
yum install -y mysql
調べてるとmysqldとか、mysql-serverとか色々出てくるんだけど、今回は関係ないみたい。
mysqlに接続して、操作できるソフトだけをインストールした感じ。
で、外部のmysqlがインストールされたサーバーに接続してるって感じなのかな?
Amazon LInux2だとmariadbが邪魔してmysqlがうまく行かないとかなんとか色々記事が出てくるが、一旦は無視。
(Qiitaとかを丸のみにして色々やっても何も得るものがないので、理解してからやることにする。)

CakePHPの/config/app.phpを変更

上記ファイルか、もしくはapp_local.phpというファイルがある場合はそちらに記述。(こっちが優先される)
hostのところにはエンドポイントを書く。
あとはそれぞれ繋ぎたいスキーマ(データベース)とパスワードとかユーザ名を書く。

コマンドで接続

EC2でmysqlとだけコマンドを打っても使えない。
のだけど、mysql -h エンドポイント -P 3306 -u ユーザ名 とすれば普通に接続が出来る。
パスワードの入力を求められて、入力して終了。

Cakeの画面で確認

よっしゃ。

mysqld

mysqlとだけコマンドを打つと以下のエラーになる。
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
これはどうもmysqldがインストールされていないことが原因のようだ。
以下公式。
MySQL :: MySQL 8.0 リファレンスマニュアル :: 4.3.1 mysqld — MySQL サーバー 読んでいくとDBが存在するサーバにインストールすべきもののようだ。
結論、今回は不要。
何故なら、EC2の中でデータベースを管理しているわけじゃないから。
おそらくだが、こいつはRDSのDBインスタンスの中に存在していることだろう。

感想

よりみちを散々して、結果辿り着くのは超簡単・かつシンプルだった。
きつかったのがmysqlLinuxにインストールして接続する部分。 これからすることには何が必要で、何がどう動くのかを理解していなかった。
mysqlの基礎が全然分かってない、けどどこで学べばいいかも分からない。
だから、全然達成感がないし、理解した感じもない。
ただ手順を学んだだけ。
こういうのってインフラ側の勉強をしていくと分かるんだろうか。
個人のブログやQiitaみたいなのを少しずつ吸収してモノにしていくんだろうか。
公式?
調べていく中でやっぱりQiitaは参考にしちゃいけないなって思った。
そもそもどんなレベルの人がどんな環境でやってるのかなんて分からないし、間違った情報だろうが古い情報だろうが、普通に掲載されている。
公式か、本でまず学ぶことが一番の近道と思った。