远程安装mysql卡住了

远程安装mysql卡住了

我编写了一个脚本来将一些软件包安装到一系列服务器。当我执行该脚本时,mysql 安装卡在“输入 root 密码”部分。我需要修改脚本中的哪些部分?请给我一些建议。

有没有办法通过脚本本身传递 mysql 根密码?

#!/usr/bin/env bash
Servers_list=/opt/servers_list
for Host in $(< $Servers_list )
do
echo "Installing package on $Host"
#ssh "${Host}" apt-get -y install "${PackageName}"
ssh "${Host}" apt-get update $$ apt-get -y install apache2 apache2-doc apache2-utils mysql-server
done

密码屏幕不同,它卡在这里

mysql 设置的常用密码配置窗口

答案1

尝试这个 :

#!/usr/bin/env bash
Servers_list=/opt/servers_list
for Host in $(< $Servers_list )
do
  echo "Installing package on $Host"
  ssh "${Host}" "echo 'mysql-server-5.7 mysql-server/root_password password your_password' | debconf-set-selections && \  
    echo 'mysql-server-5.7 mysql-server/root_password_again password your_password' | debconf-set-selections && \  
    apt-get update && \  
    apt-get -y install apache2 apache2-doc apache2-utils mysql-server"
done

如果您有很多服务器,您应该考虑使用 ansible 或 puppet 之类的工具。

编辑 :

  • 反斜杠 (\) 用于提高可读性。它们允许在下一行继续执行命令。
  • AND (&&) 运算符用于在同一行执行多个命令。如果一个命令失败,则不会执行下一个命令。
  • debconf-set-selections 用于预设配置。在本例中为:密码。您可以在手册页中通过man debconf-set-selections在终端内输入:来找到有关它的更多信息。

相关内容