mysql - 是否可以从外部 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 文件?
任何帮助都会很棒!提前致谢!
解决方案
是否可以通过类似上述的命令从 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'
推荐阅读
- java - javax.persistence.TransactionRequiredException:执行更新/删除查询,不能激活事务
- javascript - 如何修复加号和减号按钮
- linux - 优化大文件的grep操作
- android - 使用“adb reverse”连接开发服务器失败
- jquery - jQuery 开始/停止序列只工作一次
- azure-devops - Azure DevOps (VSTS) - Jenkins Pipeline - 设置用户代理
- c - 了解 IP 生存时间与多个原始套接字上的 recvfrom 的关系
- c# - 进入函数的能力取决于调用它的托管函数
- swift - 如果在剪辑结束之前开始播放,AudioKit AKClipPlayer 会崩溃
- regex - 替换 Json 文件中的分隔符字符串