COMPANY SERVICE STAFF BLOG NEWS CONTACT
2026.03.31

PHP アプリで RDS for MySQL 9.x に備える

テクログaws

 今回は、『PHP アプリで RDS for MySQL 9.x に備える』という話題を取り扱います。最近検証する機会があったので、他の方が同じような状況になった際に助けになるよう、概要を共有できればと思います。Aurora MySQL でも概ね同じですので、その際も参考になると思います。 

RDS for MySQL 8.4 はあと3年程度で標準サポート終了

 RDS for MySQL 8.4 は、2029 年 7 月 31 日参考元)に標準サポートが終了します。MySQL 8.4 からデフォルトの認証プラグインが caching_sha2_password になり、 9.x から mysql_native_password は廃止されます。これにより、古い PHP では DB 接続自体ができなくなります。MySQL 8.4 時点では認証プラグインを mysql_native_password に指定すればごまかせますが、9.0 では無理です。

PHP で caching_sha2_password に対応する方法(MySQL Community Edition の場合)

MySQL Community Edition の場合、以下の選択肢があります。

  • PHP 7.4.4 以降の PDO を利用する
    • 既に PDO を利用しているなら、これが1番簡単
    • Laravel の場合、 PDO 前提になっているので原則こちら
  • X プラグインを使う
    • PHP 7.2.x 以降で利用可能
    • ただし、MySQL ドライバーを切り替える作業は必要

しかし、RDS for MySQL では話が変わります。

RDS の MySQL(RDS for MySQL, Aurora MySQL)には MySQL Community Edition とは違う独自仕様がある

  • RDS for MySQL は、一部拡張が使用できない(参考元
    • Aurora MySQL も同じ
    • X プラグインを利用できない
      • PDO を使うしかない

結論

  • RDS for MySQL の場合、PDO しか選択肢がないので、PHP は 7.4.4 以降にする必要がある
    • どうしても PHP バージョンを更新できない場合、EC2 インスタンス内に自分で古いバージョンの MySQL サーバーを立て、DB をそちらに移行する形になる
  • PHP はなるべく常に最新バージョンにしておくのが吉
    • 人的リソースやサービス性質の問題で無理な場合もあるので、ここは状況次第

 AWS 公式ドキュメントにある通り、RDS for MySQL(Aurora MySQLも同様)では X プラグインが使用できません。これを知らずに『最悪 X プラグイン使えばいいから、PHP バージョンは古いままでいいか』と思っていると大変なことになります。

この記事を書いた人

Hary

入社年
2020年
出身地
山口
業務内容
インフラ
特技・趣味
ゲーム

テクログに関する記事一覧