Docker で phpMyAdmin を立ち上げるのにイロイロ躓いた話

2020/01/08

結論

落ち着いて docker-compose.yml の設定を理解しつつ調整すべし…。

経緯

MySqlのダンプファイル (*.sql) をDBに反映させたかったのだけれど、

  • GUIのSQLツールでやろうとしたら、なんかうまく行かなかった。
  • 毎回 docker exec でコンテナに入って mysql コマンド…はダルい。

と言うわけで phpMyAdmin でインポートするのが一番楽そう。

既に環境が docker で作られてるので、そこに phpMyAdmin のコンテナ立てれば早いかなー、と思ったら予想外に躓いたお話。

PMA_USER と PMA_PASSWORD 要らなかった

エラー

MySQL のメッセージ: ドキュメント

接続できません。設定が無効です。
mysqli_real_connect(): php_network_getaddresses: getaddrinfo failed: Name or service not known
mysqli_real_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known
MySQL サーバに接続しようとしましたが拒否されました。config.inc.php のホスト、ユーザ名、パスワードが MySQL サーバの管理者から与えられた情報と一致するか確認してください。

最初に躓いた画面。
一瞬、ホスト解決に失敗した?とか思って
PMA_HOST: db

PMA_HOST: localhost

を変えてみたりしたけど変わらず。

# PMA_USER: root
# PMA_PASSWORD: root

とコメントアウトしたら無事ログイン画面出現。

ログイン画面の「サーバー」はlocalhostじゃなかった

dockerでMySQL立ててるので、そのサーバーのIPを指定する。

今回、 Windows で Docker ToolBox を使用していたため、192.168.99.100 を指定する。

ユーザー/パスワードは MySQL で設定してるやつ。

アップロードできるファイルサイズ(最長:*MiB)を変更したいけど php.ini の指定間違ってた

ネットで検索した結果をそのままコピーして

  volumes:
    - ./docker/phpmyadmin/upload.ini:/usr/local/etc/php/php.ini

ってやってみたけど、コンテナの中にそんなファイル無かった。

最終的に自分の環境では

./docker/phpmyadmin/phpmyadmin-misc.ini を新規作成して

allow_url_fopen = Off
max_execution_time = 600
memory_limit = 64M
post_max_size = 64M
upload_max_filesize = 64M

と記載。(上から3行はコンテナ内の同名ファイルに書かれていたものをそのままコピー)

docker-compose.yml を書き換えて、

  volumes:
    - ./docker/phpmyadmin/phpmyadmin-misc.ini:/usr/local/etc/php/conf.d/phpmyadmin-misc.ini

で解決。(ファイルの整合性が取れてなくて、そもそも docker-compose up でコンソールにエラー表示されて立ち上がらなかった。)

docker exec -it phpmyadmin_1 /bin/bash

とかでコンテナの中に入り、実際どこにiniファイルがあるかを調べるべし。

DROP DATABASE を許可する

phpMyAdmin の画面から SQL で

drop database my_database_name;

とやろうとしたら「DROP DATABASE 文は無効にされています。」と怒られて出来なかったので、これを許可する。

    volumes:
      - ./docker/phpmyadmin/phpmyadmin-misc.ini:/usr/local/etc/php/conf.d/phpmyadmin-misc.ini
      - ./docker/phpmyadmin/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php

と、最後の1行を追加。

docker\phpmyadmin\config.user.inc.php を新規作成して、

<?php
$cfg['AllowUserDropDatabase'] = true;

と書いて、docker-composer を再UP。

 

#取り敢えず現象報告のみ、それぞれの事象について「なぜそうなったのか?」が深堀り出来てない記事になってしまったなぁ…。

ブログDocker,MySQL,PHP,phpMyAdmin

Posted by S