AWSのEC2インスタンスとRDS(MYSQL)の間の通信でSELinuxでハマった話
すごい初歩的なお話になりますが、僕が AWSのEC2インスタンスとRDSの通信で1時間くらいハマった話をします。
ec2インスタンスから直接mysqlのコマンドでhost指定して接続するのは可能なのに、
PHPから接続しようとすると接続できない。
ずっと
Unknown MySQL server host 'host名:port番号'
みたいなエラーがでてひたすらhost名がおかしいのかな?
みたいな感じになっていました。
実はこれの原因はSELinuxでした。 あの、みんながめんどくさがって無効にするSELinuxです。
どうやら、SELinuxはhttp通信によるDB接続はデフォルトで無効にしているようです。
なので、PHPからhttp通信によるDB通信が弾かれたことになります。
でもこのエラー表示はちょっと誤解しちゃいますよね・・・・
$ setsebool -P httpd_can_network_connect_db on
とやれば、http通信でのDB接続が可能になってちゃんとRDSにつながりました。
ぐぐっても結構でてこなかったので、実際ハマるのは僕くらいかもしれませんが、備忘録的にここに残しておきます。