【问题标题】:Docker command through SSH from a remote machine从远程机器通过 SSH 的 Docker 命令
【发布时间】:2020-10-21 15:03:53
【问题描述】:

我正在尝试通过 SSH 从远程机器将 mysql 命令运行到 docker 容器中。特别是命令是这个:

ssh user@servername /usr/bin/sudo /usr/bin/docker exec CONTAINER '/usr/bin/mysql --user=USER --password=PASSWORD -e "show databases;"'

我收到此响应:ERROR 1049 (42000): Unknown database 'databases;"'

在机器上启动了相同的命令(/usr/bin/sudo /usr/bin/docker exec CONTAINER /usr/bin/mysql --user=USER --password=PASSWORD -e "show databases;")容器正在运行,工作正常!

有人可以帮助我吗?谢谢

【问题讨论】:

  • 你能检查数据库名称是否正确吗?参考:stackoverflow.com/questions/19678769/…
  • 感谢您的回答。我运行“显示数据库”,我不需要将数据库名称传递给命令。
  • 如果我设置了这个,我可能会将 MySQL 连接端口转发到我的本地机器(使用 docker run -pssh -L 选项),然后使用本地客户端。这解决了潜在的 shell 引用问题,不需要sudo

标签: mysql docker ssh


【解决方案1】:

使用这个命令

ssh user@servername 'sudo docker exec CONTAINER mysql --user=USER --password=PASSWORD -e "show databases;"'

我们必须在引号('')中传递完整的命令(要在远程 shell 上执行)。

【讨论】:

  • 感谢您的回答。我也试过这个,但得到了同样的错误。
  • ssh user@servername '/usr/bin/sudo /usr/bin/docker exec CONTAINER /usr/bin/mysql --user=USER --password=PASSWORD -e "show databases;" '
  • //这是在我的设置上工作,没有 qoutes 我得到与你提到的相同的错误 ssh test@182.118.10.15 '/usr/bin/docker exec 05102b9ff195 /usr/bin/mysql --user =root --password=root -e "显示数据库;"'
  • 谢谢。我真的不知道,我总是用引号也得到那个错误。
【解决方案2】:

我使用 /usr/bin/mysqlshow instad 解决了 /usr/bin/mysql。现在它正确返回数据库列表。我发布了我用来远程保存 mysql docker 容器数据库列表的整个命令:

LIST_DB=($(ssh -q USER@SERVERNAME /usr/bin/sudo /usr/bin/docker exec CONTAINER "/usr/bin/mysqlshow -u USER -pPASSWORD" 2>&1 | sed 's/|//g' | sed 's/\-//g' | sed 's/\+//g' |sed -e 's/^[[:blank:]]*//g' | grep -v "Using a password" | grep -Ev "_schema|tmp|innodb|sys|Databases"))

【讨论】:

    猜你喜欢
    • 2016-03-19
    • 2018-01-08
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    相关资源
    最近更新 更多