我有一个bash安装脚本,它不需要任何提示就可以自动安装mysql。
wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.16-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.16-1_all.deb
sudo apt update
sudo apt install -y mysql-server
sudo systemctl start mysql.service
sudo systemctl enable mysql.service之后,我希望通过以下方法来确保安装:
SECURE_MYSQL=$(expect -c "
set timeout 10
spawn mysql_secure_installation
expect \"Would you like to setup VALIDATE PASSWORD plugin?\"
send \"n\r\"
expect \"New password:\"
send \"$DB_ROOT_PASSWORD\r\"
expect \"Re-enter new password:\"
send \"$DB_ROOT_PASSWORD\r\"
expect \"Remove anonymous users?\"
send \"y\r\"
expect \"Disallow root login remotely?\"
send \"y\r\"
expect \"Remove test database and access to it?\"
send \"y\r\"
expect \"Reload privilege tables now?\"
send \"y\r\"
expect eof
")
echo "$SECURE_MYSQL"最新的Debian 10.9似乎发生了一些变化。在我安装sudo apt install -y mysql-server的那一刻,它就要求我提供一个根密码。然后,当尝试运行mysql_secure_installation时,它会中断,因为根密码已经设置好了。
请不要提示,如何使安装具有交互性?
文档说:
确保记住您设置的根密码。希望稍后设置密码的用户可以在对话框中将密码字段保留为空白,只需按Ok;在这种情况下,对服务器的根访问将由Socket Peer-凭据可插入身份验证来验证使用Unix套接字文件的连接。以后可以使用程序mysql_secure_installation设置根密码。
如何在安装时将密码保留为空白?
发布于 2021-04-13 08:14:07
我找到了解决办法。问题是环境变量DEBIAN_FRONTEND=noninteractive没有传递给sudo。这是需要-E的地方。
export DEBIAN_FRONTEND=noninteractive
wget -c https://dev.mysql.com/get/${MYSQL_8_file}
sudo -E dpkg -i ${MYSQL_8_file}
sudo apt update
sudo -E apt install -y mysql-server好好享受吧。
https://serverfault.com/questions/1060215
复制相似问题