предварительно настройте пустой пароль для mysql через debconf-set-selections

я настраиваю скрипт bash для автоматизации создания среды лампы.

Я использую 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 ответов


EDIT: этот ответ ниже предлагает возможное решение, которое может работать для Ubuntu 15.10, однако оно не удалось для меня на Ubuntu 14.04.


в настоящее время невозможно напрямую установить пустой пароль для mysql-server во время процесса установки с помощью debconf-set-selections, но есть способы обойти эту проблему и заставить пустой пароль, тем не менее.


прямой подход предварительной настройки пароля к пустая строка завершается ошибкой, потому что:

  1. на config скрипт, который считывает пароль из базы данных сразу же задает свой!--6--> флаг 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
    
  2. на config скрипт выполняется несколько раз в процессе установки.

таким образом, предварительная настройка пароля на пустую строку влияет только на первое выполнение config скрипт, начиная с seen флаг установлен до true в этот момент времени, в то время как дальнейшие вызовы того же скрипта отображают вопрос пользователю, как значение seen флаг уже был установлен до false, когда они исполняются.


тем не менее, можно предотвратить debconf от задавать вопросы вообще другими средствами, но эти методы применяются ко всем вопросам, а не только к связанным с паролем. Например, любое из следующих действий пароль пустой:

  • Set debconfфронтенд к noninteractive:

    DEBIAN_FRONTEND=noninteractive apt-get install [-y] [-q] mysql-server
    
  • Set С critical:

    DEBIAN_PRIORITY=critical apt-get install [-y] [-q] mysql-server
    

    это, вероятно, предпочтительнее, поскольку это позволяет отображать критические сообщения.


в настоящее время это можно сделать это, но это немного сложно.

вы должны явно установить кавычки, чтобы отметить пустой пароль, как это:

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

только что проверил в Ubuntu 15.10, работает как шарм.


Я думаю, что ваша проблема заключается в том, что прямо перед "паролем" вам нужно добавить слово "строка" следующим образом:

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"

попробуйте добавить пустой аргумент

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