【问题标题】:Connecting to MySQL Fails Using Bash in Terraform but works via SSH在 Terraform 中使用 Bash 连接到 MySQL 失败,但可以通过 SSH 工作
【发布时间】:2018-01-09 17:59:31
【问题描述】:

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

干杯

克里斯

【问题讨论】:

  • SSH 为您提供了一个带有 TTY 的交互式 shell,而 Terraform 不会这样做。因此,您需要有一个无需 TTY 即可执行的命令

标签: mysql linux bash ssh terraform


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2010-10-25
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 2020-03-13
    • 1970-01-01
    相关资源
    最近更新 更多