【问题标题】:preconfigure an empty password for mysql via debconf-set-selections通过 debconf-set-selections 为 mysql 预配置一个空密码
【发布时间】:2014-06-15 01:14:50
【问题描述】:

我正在设置一个 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

【问题讨论】:

    标签: mysql bash ubuntu debian debconf


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      • MySQL 5.7

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

        • 对于MySQL APT repository提供的包:

          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 package repositories提供的包:

          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

        this answer 建议的解决方案应该可以工作,只需添加一点确认空密码:

        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
        

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

      【讨论】:

      • 我忘了我问过这个问题。一年前,我用“DEBIAN_FRONTEND=noninteractive”的方式解决了这个问题,从那以后我一直很满意。
      【解决方案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"
      

      【讨论】:

        【解决方案4】:

        尝试实际添加一个空参数

        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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-06-27
          • 1970-01-01
          • 1970-01-01
          • 2021-05-14
          • 2023-03-14
          • 1970-01-01
          • 2014-11-05
          • 2017-12-02
          相关资源
          最近更新 更多