web-dev-qa-db-fra.com

Exécutez la commande mysql de l'hôte vers le conteneur exécutant le serveur mysql

J'ai suivi l'instruction https://registry.hub.docker.com/_/mysql/ pour extraire une image et exécuter un conteneur dans lequel un serveur mysql est exécuté. Le conteneur s'exécute en arrière-plan et je lancerais quelques commandes. Quel est le meilleur moyen de se connecter au conteneur et d’exécuter cette commande à partir de la ligne de commande?

19
Mazzy

Vous pouvez vous connecter à votre conteneur mysql et exécuter vos commandes en utilisant:

docker exec -it mysql bash -l

(Où mysql est le nom que vous avez donné au conteneur)

Gardez à l'esprit que tout ce que vous ferez ne persistera pas jusqu'à la prochaine fois que vous exécuterez un conteneur à partir de la même image.

30
Abdullah Jibaly
docker exec -i some_mysql_container mysql -uroot -ppassword  <<< "select database();"
20
Laurent Picquet

Pour vous connecter à la base de données MySQL en utilisant le client en ligne de commande MySQL.

  1. Je me connecte à la bash dans le conteneur MySQL en cours d'exécution:

    $ docker exec -t -i container_mysql_name /bin/bash

  2. J'exécute le client MySQL à partir du conteneur bash MySQL:

    $ mysql -uroot -proot

  3. Disco !

12
Nolwennig

Dans mon cas, la solution <<< n'a pas fonctionné. 

Au lieu de cela, j'ai utilisé -e.

Exemple:

docker exec ${CONTAINER_NAME} mysql -u ${USER_NAME} -p${PASSWORD} -e "drop schema test; create schema test;"

0
Andreas Volkmann