执行mysql命令从主机到运行mysql服务器的容器

Maz*_*zzy 31 mysql docker linux-containers

我按照指令https://registry.hub.docker.com/_/mysql/来提取图像并运行一个运行mysql服务器的容器.容器在后台运行,我会运行一些命令.哪个是连接容器并从命令行执行此命令的最佳方法?

Abd*_*aly 43

您可以使用以下命令连接到mysql容器并运行命令:

docker exec -it mysql bash -l
Run Code Online (Sandbox Code Playgroud)

(mysql你给容器的名字在哪里)

请记住,您执行的任何操作都不会在下次从同一图像运行容器时持续存在.

  • rpc 错误:code = 2 desc = oci 运行时错误:exec 失败:container_linux.go:247:启动容器进程导致“exec:\”-it\“:$PATH 中找不到可执行文件”在您的解决方案中出现此错误。 (2认同)

Lau*_*uet 26

docker exec -i some_mysql_container mysql -uroot -ppassword  <<< "select database();"
Run Code Online (Sandbox Code Playgroud)

  • '&lt;&lt;&lt;' 指示 shell 将其后的任何内容作为 stdin,类似于来自 echo 的管道。 (7认同)
  • What does `<<<` mean? Why 3 of them not 2? (2认同)

Nol*_*nig 15

使用MySQL命令行客户端连接到MySQL数据库.

  1. 我将bash连接到正在运行的MySQL容器中:

    $ docker exec -t -i

  2. 我从bash MySQL容器运行MySQL客户端:

    container_mysql_name

  3. 迪斯科!

  • 您可以像这样组合这些步骤:`docker exec -t -i container_mysql_name/bin/bash -c"mysql -uroot -proot"` (4认同)

And*_*ann 7

就我而言,<<<解决方案不起作用。

相反,我用了-e

例:

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

  • 如何运行 .sql 文件而不是执行硬编码的 SQL 查询? (2认同)

Jer*_*ong 5

对于@Abdullah Jibaly解决方案,在MySQL 5.7中进行测试后,它只会进入bash终端提示符,因此您仍然需要第二次输入mysql命令。

为了使用一行命令运行MySQL容器后直接进入MySQL命令行客户端,只需运行以下命令:

docker exec -it container_mysql_name mysql -u username -p
Run Code Online (Sandbox Code Playgroud)