在创建centos服务器期间,我正在通过terraform运行下面的bash脚本。

"sudo docker run -d --restart=unless-stopped --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=${var.mysql_root_password} mysql",
"sudo yum -y install mysql",
"mysql -u root -p${var.mysql_root_password} -h 127.0.0.1"

但是mysql命令失败,输出如下
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0

但是,如果我通过ssh连接到服务器,我可以运行mysql命令并成功连接到mysql。
为了简化我的问题,我缩短了上面的mysql命令。我试图使用这个命令连接到mysql实例并创建一个用户和数据库。我通过将要创建的用户名和数据库作为docker run命令的一部分,通过环境变量传递来实现这一点。但是,我很想知道为什么上面的代码不能通过terraform工作,但是在我ssh到服务器时可以工作。
干杯
克里斯

最佳答案

你得等等。启动数据库容器并等待服务就绪。

"sudo docker run -d --restart=unless-stopped --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=${var.mysql_root_password} mysql",
"sudo yum -y install mysql",
sleep 180
"mysql -u root -p${var.mysql_root_password} -h 127.0.0.1"

07-28 03:10
查看更多