9

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

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

它主要工作得很好。但问题是我必须为 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

4 回答 4

10

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

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

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

刚刚在 Ubuntu 15.10 上测试过,效果很好。

于 2015-11-22T21:38:39.337 回答
8

mysql-server在安装包的过程中设置空密码的推荐方法debconf-set-selections取决于手头的包版本。

  • MySQL 5.7

    虽然可以将密码配置为空,但安装过程会在这种情况下自动启用身份验证插件。auth_socket因此,无密码登录应以使用基于套接字的身份验证为条件(例如,要求从本地机器上UNIX的用户帐户进行登录)。root

    • 对于MySQL APT 存储库提供的包:

      sudo debconf-set-selections <<< "mysql-community-server mysql-community-server/root-pass password "
      sudo debconf-set-selections <<< "mysql-community-server mysql-community-server/re-root-pass password "
      
    • 对于Ubuntu 软件包存储库提供的软件包:

      sudo debconf-set-selections <<< "mysql-server mysql-server/root-password password "
      sudo debconf-set-selections <<< "mysql-server mysql-server/root-password_again password "
      
  • MySQL 5.5 和 MySQL 5.6

    此答案建议的解决方案应该可以工作,并添加一个确认空密码的小补充:

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

后备解决方案

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
    

    这种方法可能更可取,因为它允许显示关键消息。

于 2015-04-09T13:46:11.313 回答
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"
于 2014-07-26T20:58:06.127 回答
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
于 2014-04-29T09:01:15.963 回答