如何从主机执行 mysqldump 命令到 mysql docker 容器
How to execute mysqldump command from the host machine to a mysql docker container
我想为 运行ning 在 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: No such file or directory
但如果我只是 运行 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.
mysqldump
使用通常的 MySQL CLI 选项连接到其他地方的服务器 运行ning。这意味着您可以直接从主机 运行 它,而不需要 docker exec
(管理员)权限。
mysqldump -h127.0.0.1 -uroot -pSomePassword DBName > MyNewDump.sql
与 docker exec
形式相反,这会在主机上创建转储文件,但这可能正是您想要的。
我想为 运行ning 在 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: No such file or directory
但如果我只是 运行 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.
mysqldump
使用通常的 MySQL CLI 选项连接到其他地方的服务器 运行ning。这意味着您可以直接从主机 运行 它,而不需要 docker exec
(管理员)权限。
mysqldump -h127.0.0.1 -uroot -pSomePassword DBName > MyNewDump.sql
与 docker exec
形式相反,这会在主机上创建转储文件,但这可能正是您想要的。