koudenpaのブログ

趣味のブログです。株式会社はてなでWebアプリケーションエンジニアをやっています。職業柄IT関連の記事が多いと思います。

DockerのphpmyadminにSSL/TLS設定を仕込んでPlanetScaleに接続する

PlanetScaleコンテナで動かしているphpMyAdminから繋ぎたい。

何も考えずに接続すると以下のようなエラーが発生する。

mysqli::real_connect(): (HY000/1105): unknown error: Code: UNAVAILABLE server does not allow insecure connections, client must use SSL/TLS

PlanetScaleのようなインターネット越しで接続するDBサービスは接続を暗号化することを求めてくる。そりゃそうだ。

以下辺りを眺めてSSL/TLSを使って接続するようにした。

こんな感じ。

GitHub - 7474/phpmyadmin-with-basic-auth

<?php
// config.user.inc.php
// for PlanetScale
if ($_ENV['PMA_SSL']) {
    for ($i = 1; isset($hosts[$i - 1]); $i++) {
        $cfg['Servers'][$i]['ssl_ca'] = '/etc/ssl/certs/ca-certificates.crt';
        $cfg['Servers'][$i]['ssl'] = true;
    }
}
FROM phpmyadmin/phpmyadmin:5.2.1
# Dockerfile
COPY config.user.inc.php /etc/phpmyadmin/config.user.inc.php

繋がってめでたし。