通过debconf-set-selections预配置mysql的空密码

时间:2014-04-29 08:01:48

标签: mysql bash ubuntu debian debconf

我正在设置一个bash脚本来自动构建LAMP环境。

我在安装mysql,phpmyadmin等之前使用debconf-set-selections来设置选项......

它主要起作用。但问题是我必须为mysql设置一个空密码,并且在安装过程中它仍然要求输入密码,即使是之前键入的行:

echo "mysql-server-5.5  mysql-server/root_password  password" | debconf-set-selections
echo "mysql-server-5.5  mysql-server/root_password_again    password" | debconf-set-selections

4 个答案:

答案 0 :(得分:10)

目前, 可以做到这一点,但这有点棘手。

您必须明确设置引号以标记空密码,如下所示:

sudo debconf-set-selections <<< "mysql-server mysql-server/root_password password \"''\""

刚刚在Ubuntu 15.10上测试过,就像魅力一样。

答案 1 :(得分:8)

编辑: This answer below建议可能适用于Ubuntu 15.10的解决方案,但在Ubuntu 14.04上我失败了。


目前无法使用mysql-serverdebconf-set-selections的安装过程中直接为config设置空密码,但仍有办法绕过此问题并强行输入空密码。


将密码预配置为空字符串的直接方法失败,原因是:

  1. 一旦检测到密码设置为空字符串,从数据库中读取密码的seen脚本会立即将其false标志设置为db_input high mysql-server/root_password || true db_go db_get mysql-server/root_password # if password isn't empty we ask for password verification if [ -z "$RET" ]; then db_fset mysql-server/root_password seen false db_fset mysql-server/root_password_again seen false break fi

    config
  2. config脚本在安装过程中执行多次。

  3. 因此,将密码预先配置为空字符串只会影响seen脚本的首次执行,因为true标志在该时间点设置为seen,而进一步同一脚本的调用会向用户显示问题,因为false标志的值在执行时已设置为debconf


    但是,可以通过其他方式阻止debconf完全提问,但这些方法适用于所有问题,而不仅仅是与密码相关的问题。例如,以下任何一项都会将密码留空:

    • noninteractive的前端设为DEBIAN_FRONTEND=noninteractive apt-get install [-y] [-q] mysql-server

      debconf
    • critical的优先级设为DEBIAN_PRIORITY=critical apt-get install [-y] [-q] mysql-server

      {{1}}

      这可能更好,因为它允许显示关键信息。

答案 2 :(得分:3)

我认为您的问题是在“密码”之前,您需要像这样添加“字符串”这个词:

echo "mysql-server-5.5  mysql-server/root_password string password" | debconf-set-selections

顺便说一下,这是做同样的事情,但我觉得很酷:

debconf-set-selections <<< "mysql-server-5.5  mysql-server/root_password string password"

答案 3 :(得分:0)

尝试实际添加空参数

echo mysql-server-5.5 mysql-server/root_password password "" | debconf-set-selections
echo mysql-server-5.5 mysql-server/root_password_again password "" | debconf-set-selections