conectarse a un contenedor mysql compuesto por docker niega el acceso, pero la ventana acoplable que ejecuta la misma imagen no

Tengo algunos problemas para conectarme al contenedor docker mysql que lancé con docker-compose. Esta es una publicación larga (¡lo siento!).

Aquí está mi archivo docker-compose.yml:

db:
  image: mysql:5.7
  ports:
    - "3306:3306" # I have tried both ports and expose "3306". Still doesn't work 
  environment:
    - MYSQL_ROOT_PASSWORD="secret"
    - MYSQL_USER="django"
    - MYSQL_PASSWORD="secret"
    - MYSQL_DATABASE="myAppDB"

Entonces:

$> docker-compose build
db uses an image, skipping #expected!
$> docker-compose up
<<LOTS OF OUTPUT>>

Bien, ahora tengo un Docker Container Runner en funcionamiento mysql: 5.7. ¡Excelente! ¿O es eso? Cuando pruebo en mi aplicación django, recibo errores operativos que dicen que el usuario no tiene permitido conectar la base de datos. Ok, entonces quizás sea mi django.

$> docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
c7216f99ca0f        mysql:5.7           "docker-entrypoint.sh"   3 minutes ago       Up 3 minutes        0.0.0.0:3306->3306/tcp   sharpfin_db_1

$> docker-machine ip dev
192.168.99.100
$> mysql -h 192.168.99.100 -P 3306 -u django -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'django'@'192.168.99.1' (using password: YES)

ok, entonces tal vez ¿Tiene algo que ver con conectarse al contenedor docker-compose? ¿Qué sucede si intento conectarme desde el interior del contenedor acoplable?

$> docker exec -it c7216f99ca0f /bin/bash
root@c7216f99ca0f:/#
root@c7216f99ca0f:/# mysql -u django -p                                                                                                                                                           
Enter password: 
ERROR 1045 (28000): Access denied for user 'django'@'localhost' (using password: YES)

ok, entonces docker mysql no me deja conectar, no sé por qué. Veamos qué sucede cuando intento hacer esto sin docker-compose:

$> docker run --name run-mysql -e MYSQL_ROOT_PASSWORD="secret" -e MYSQL_USER="django" -e MYSQL_PASSWORD="secret" -e MYSQL_DATABASE="myAppDB" -p "3306:3306" mysql:5.7
<<LOTS OF OUTPUT SAME AS BEFORE>>

Ok, ahora tenemos un contenedor que ejecuta la misma imagen que antes con la misma configuración. (Creo que esta afirmación probablemente no sea cierta: docker-compose está haciendo algo diferente a la ejecución de docker).

$> docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
73071b929e82        mysql:5.7           "docker-entrypoint.sh"   3 minutes ago       Up 3 minutes        0.0.0.0:3306->3306/tcp   run-mysql

Ahí está mi contenedor (llamado run-mysql). Vamos a conectar!

$> mysql -h 192.168.99.100 -P 3306 -u django -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.12 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| myAppDB            |
+--------------------+
2 rows in set (0.01 sec)

mysql>

Bien. Puede iniciar sesión. Eso es raro ... ¿Qué pasa desde el interior del contenedor?

$> docker exec -it 73071b929e82 /bin/bash
root@73071b929e82:/# mysql -u django -p                                                                                                                                                           
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.12 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| myAppDB            |
+--------------------+
2 rows in set (0.00 sec)

mysql> 

Ok, puedo iniciar sesión desde afuera y dentro del contenedor cuando lo ejecuto con Docker Run, pero no con Docker-compose. ¿Que esta pasando? Debe haber algo que Docker-compose está haciendo detrás de escena que cambia la forma en que se inicializa la base de datos.

Todo lo anterior es exactamente lo mismo si lo intento con el usuario root también. Por lo tanto, no es un problema de permisos con el usuario de django.

Alguna idea de cómo resolver esto?