LoginSignup
1
1

リモートサーバのMySQLの管理用にphpMyAdminをDockerでmacOS上に建てる

Last updated at Posted at 2021-10-07

はじめに

MySQLサーバが動いていて、ちょっとphpMyAdminで繋ぎたかったです。

具体的にはRDSでMySQLが稼働中で、phpMyAdminのアドバイザー(チューニングのアドバイスを行ってくれる機能)を使いたかったのですが、通常phpMyAdminを入れるにはPHPが動くWebサーバを建てる必要があります。
EC2などでインスタンスを立てたりする必要があるのですが、閉じ忘れだったり、不用意にアクセスされたりするためお手軽に使えないか、と思いました。

結論からするととても簡単でした。

コンテナ単独

phpMyAdmin公式のDockerイメージを起動するだけでOKです。
起動時に接続先ホストを与えるのでそちらを事前に用意しておきます。

$ export PMA_HOST=mysql.example.com
$ docker run --name myadmin -d -e PMA_HOST=mysql.example.com -p 8080:80 phpmyadmin

起動が完了したら http://localhost:8080 にアクセスするとphpMyAdminが開きます。後は通常の認証でOKです。(ただし外部からの接続が許可されたユーザーのみです)

image.png

終了はDockerコンテナを落とせばOKです。

$ docker down myadmin && docker kill myadmin

docker-compose

docker-compose.yml
version: '3'

services:
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOST=docker.for.mac.host.internal
      - PMA_PORT=3306
#      - PMA_USER=
#      - PMA_PASSWORD=


    ports:
      - "3000:80"

    # セション永続化
    volumes:
      - ./docker/phpmyadmin/sessions:/sessions

SSHトンネル

対象のMySQLサーバが外部から接続できない場合、SSHでトンネルを張ると良いです。

例えばローカルホストのIP接続のみ( 127.0.0.1 )を許可している場合、下記のようにするとトンネルを張ることができます。

ssh -L 3306:127.0.0.1:3306  mysql.example.com

こうするとホストOSのポート 3306 で対象サーバのMySQLサーバに接続されます。

なおその場合、phpMyAdminからは docker.for.mac.host.internal というホスト名で接続します。
これはphpMyAdminのDockerコンテナからホストOSのmacOSへの接続名となります。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1