连接到MySQL失败在Terraform中使用Bash但通过SSH工作

时间:2017-08-02 13:18:48

标签: mysql linux bash ssh terraform

我在创建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连接到服务器时却能正常工作。

干杯

克里斯

1 个答案:

答案 0 :(得分:0)

你需要等待。启动数据库容器并等待服务准备就绪。

"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"