MySQLの9系でハマったMTの裏側

ただちゃんとドキュメント読んでなかっただけ。これが結論

恥ずかしながらドキュメント(マニュアル)全然読まない人間なので、ガチャゴチャやってものすごく時間を無駄にしたという。なのでちゃんと読みましょう。という戒め。

といってもそれだと久しぶりの投稿ももったいないので雑だけど書く。

今回やりたかったこと

・MTサーバー内にてMySQL8.x系が稼働、これをRDSサービスに切り替えたい。

何が問題だったのか

  • 使用したRDSがMySQLの9.x系(今回は9.7.0)
  • MTサーバーはSElinuxを有効状態なため、httpdによるDBアクセスにもルールがある

一番は前者がいけなかった。(マニュアル読んでなかったのが)大前提として8.4系からプラグイン認証方式がSSL接続のcaching_sha2_passwordがデフォルトとなっているそうで。(まだ8.4系以上を使ったことがなかった)

そのためDBI::mysqlで接続するにはmt-configに隠し味を追加しないといけなかった。

インストールウィザードで環境設定ファイル(mt-config.cgi)を作成する

DBIConnectOptions - 環境変数リファレンス

なので自分の環境ではこうした。

  • DBIConnectOptions mysql_ssl=1
  • DBIConnectOptions mysql_ssl_verify_server_cert=0

これでオッケーじゃ~んって思ってたらまだエラー。

で結果SElinuxの制御が該当していた。

5.6.2. ブール値の設定

てことでこれもサクッと設定する。

  • setsebool httpd_can_network_connect_db on
  • setsebool httpd_can_network_connect on
    • 恒久対応時はオプション-Pを追加

これでバッチリ!

最近はClaudeを使っていることもあり、始めから色々聞きまくった結果、初歩(関連資料読む)をおざなりにしてしまっていたのが結果遠回りに。

初心忘れるべからず。でした。