Amazon Lightsailのマネージドデータベースが提供するパスワードでログイン出来ない【#np2020】

Amazon Lightsail
順次、サーバの引っ越しを進めています。


使うサービスを上手く言えばAWSでも料金をかなりセーブ出来そうで、例えばSSLが格安で設定出来たり(マルチドメインSSL年間17,820円→月$1ぐらい、それ以外にDNSが月$0.6ぐらい)、ドメイン管理の料金がいつの間にかムームードメインより割り安になっていたり(1,480円→$12)。サーバ代だけでなく周辺の色んなコストを圧縮することが出来そうです。AWSすげえな。


そんな中で、新しいサーバのデータベースとしてLightsailのマネージドデータベースを契約しました。月額$15。中身はRDSみたいですが、機能と性能を絞ることで若干安くなっています(RDSだと月額$25ぐらいから)。契約・設定はLightsailのコンソールから行えます。ユーザーの追加など細かいことは出来ませんが、特に問題がないかなと。セキュリティ周りの設定もかなり簡略化されていて、「パブリック」をオンに設定すると外部からIDとパスワードで接続可、オフにするとLightsailからのみ接続可という感じ。限定的なインバウンド設定ってことでしょうか。僕の個人サイトはほんとに小さいので、そのぐらいで十分です。


問題になったのは、そのマネージドデータベースで自動的に発行されるパスワード。記号を含んだとても強いパスワードが発行されるんですが、それがどうもPDOで使えないみたいなんですよね……使えなかったパスワードの例はこんな感じ。

E|QG=G0jD{LOva!,11H;il[I+NWV<O[o

エラーが出たシチュエーションは、RSSリーダー「Tiny Tiny RSS」のインストールでデータベースの設定を行う部分で、そのパスワードでログイン出来なかったというエラーが出てしまう。かなり嵌まったんですけど、ソース見る限りごく普通にPDOを使っているだけだし、パスワードを変えたらアクセス出来るようになりました。


MySQL的には割とどんな記号でも使えるみたいなんですが、

データベースのパスワードに使用できる文字をおしえてください。 – Zenlogic よくある質問(FAQ)

PDOだと「!」とか「|」とか使えないっぽい。とはいえ記号を含まないパスワードにするのも何なので、自動発行したパスワードの中から使えそうな記号($とか*とかは大丈夫)だけを含んだものを選んで使いました。なるほどね。そんな制限があったなんて知らなかったなあ。