El contenedor, de forma predeterminada, no permite que nadie inicie sesión en el servidor como root desde fuera del contenedor. Esto evita que otros contenedores (o el host también) se conecten a la base de datos (usando credenciales de raíz). Puede usar la bandera MYSQL_ROOT_HOST para pasar la IP del contenedor o host que debería poder conectarse al servidor con credenciales de raíz. P.ej. Para permitir que el host se conecte, configuraría MYSQL_ROOT_HOST="172.17.0.1
".
También veo que creó solo un usuario raíz, pero en la cadena de conexión usa userid=user
. Puede usar server=127.0.0.1
como nombre de host.