首页 > 解决方案 > 是否可以从外部 docker 将确定的 $MYSQL_ROOT_PASS 传递给 MySQL docker?如果有怎么办?

问题描述

所以我正在编写一个安装脚本,因为我无法在 armfh 上找到可靠的 MySQL 替代品(数据库必须与 MySQL 兼容),所以我正在使用一个社区,但它不会启动数据库正如它应该。它要求我通过以下论点。

mysql -h"db" -u"root" -p"$MYSQL_ROOT_PASSWORD" "$MYSQL_DATABASE" < /docker-entrypoint-initdb.d/1_db.sql

从码头内部。问题是我希望它作为一个流畅的安装脚本自然流动。我尝试使用以下命令传递文档并获取密码提示:

docker exec -it db bash -c "mysql -h"db" -u"root" -p"$MYSQL_ROOT_PASSWORD" "$MYSQL_DATABASE" < /docker-entrypoint-initdb.d/1_db.sql"

如果也尝试过:

docker exec -it db bash -c "mysql -h'db' -u'root' -p'$MYSQL_ROOT_PASSWORD' '$MYSQL_DATABASE' < /docker-entrypoint-initdb.d/1_db.sql

FwIW:我用MYSQL_ROOT_PASSWORD=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 64 | head -n 1)来定义密码。如果我手动输入 docker send 命令 1(在引号中),则数据库会启动。

所以总结一下我的问题:是否可以通过像上面这样的命令来从 docker 外部激活 1_db.sql 文件?

任何帮助都会很棒!提前致谢!

标签: mysqldockerpi

解决方案


是否可以通过类似上述的命令从 docker 外部激活 1_db.sql 文件?

你可以尝试类似的东西

cat 1_db.sql  | docker exec -i test bash -c 'mysql  -uroot -p$MYSQL_ROOT_PASSWORD $MYSQL_DATABASE'

另外,请记住,当您尝试exec bash -c "mysql -uroot -p$MYSQL_ROOT_PASSWORD"MYSQL_ROOT_PASSWORD主机中而不是在容器中时,请使用单引号。

确定$MYSQL_ROOT_PASS从外部 docker 到 MySQL docker?如果有怎么办?

docker exec -i test bash -c 'echo mysql docker password is $MYSQL_ROOT_PASSWORD'


推荐阅读