mysql - 如何从主机执行mysqldump命令到mysql docker容器
问题描述
我想为在 docker 容器中运行的数据库创建 mysql 转储。但是我不想进入容器并执行命令,而是从主机执行。有没有办法做到这一点。我尝试了几件事,但可能我对命令有误。
docker exec -d mysql sh mysqldump -uroot -pSomePassword DBName > /dumps/MyNewDump.sql
docker exec -d mysql sh $(mysqldump -uroot -pSomePassword DBName > /dumps/MyNewDump.sql)
docker exec -d mysql mysqldump -uroot -pSomePassword DBName > /dumps/MyNewDump.sql
该dumps
目录已经绑定到主机。
这些命令似乎不是正确的方法,或者可能根本不是正确的方法。这些总是以错误告终:
bash: /dumps/MyNewDump.sql: 没有这样的文件或目录
但是,如果我只是mysqldump -uroot -pSomePassword DBName > /dumps/MyNewDump.sql
在容器内运行,它就可以正常工作。
解决方案
这对我有用(只需替换容器 ID):
docker exec 1d3595c0ce87 sh -c 'mysqldump -uroot -pSomePassword DBName > /dumps/MyNewDump.sql'
mysqldump: [Warning] Using a password on the command line interface can be insecure.
推荐阅读
- python - 未找到 POST/405 方法 - 集成聊天机器人时出现 Slack 错误
- java - 拆分中间有回车符的字符串(JAVA)
- json - Shopify 中 JSON 中的自定义部分存在多个问题
- javascript - 如何在 html 中使用 python、Jinja 模板创建多页发票
- laravel - 如何自定义 php artisan ui vue --auth 文件
- javascript - 调用一个模块方法在 Javascript 中抛出未定义的错误
- python - OperatorNotAllowedInGraphError 仍然存在,启用了急切执行并添加了装饰器
- azure-devops - 如何使用 Azure DevOps 部署 Quasar 项目
- javascript - 使用正则表达式将 URL 匹配到最后一个正斜杠
- laravel - Laravel - 访问获取传递的变量?