在变量中获取 docker mysql root 密码

Get docker mysql root password in a variable

我使用以下命令创建了一个 mysql docker 容器 mysql容器:

docker exec -it mysqlcontainer -d mysql/mysql-server

我 运行 docker 记录 mysql 容器并得到以下信息:

[Entrypoint] GENERATED ROOT PASSWORD: FB=?ySG5,3#@kur&,Wj459fk2Gy2C_O8

[Entrypoint] ignoring /docker-entrypoint-initdb.d/*

[Entrypoint] MySQL init process done. Ready for start up.
2022-04-22T07:49:23.295242Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld:   

我想将这个生成的 root 密码放入一个变量中,以便我可以在 shell 脚本中使用这个变量。

我使用以下命令获取密码,但如何将密码放入变量

docker logs mysqlcontainer 2>&1 | grep GENERATED
[Entrypoint] GENERATED ROOT PASSWORD: FB=?ySG5,3#@kur&,Wj459fk2Gy2C_O8

当您说您想要变量中的密码时,我假设您指的是 shell 变量。如果是这样,你可以这样做

export myvar=$(docker logs mysqlcontainer 2>&1 | awk '/GENERATED ROOT PASSWORD/ {print }')

然后

echo $myvar

应该给你密码。

它的工作原理是在日志中查找字符串 'GENERATED ROOT PASSWORD' 并将变量设置为该行中的第 5 个单词。

对于那些不熟悉 awk 的人来说,这是一个非 awk 版本的解决方案。 shellcheck.net 也不鼓励在一条指令中声明和使用变量,我更喜欢将指令分开

MYVAR=$(docker logs mysqlcontainer 2>&1 | grep 'GENERATED ROOT PASSWORD' | cut -f5 -d" ")
export MYVAR