Сценарий установки MySQL на Ubuntu

23

Мне нужно написать скрипт, который соберет мой сервер из новой установки Ubuntu. Среди таких вещей, как Apache и PHP, необходимо установить MySQL. Единственная проблема здесь в том, что когда я устанавливаю MySQL с помощью apt-get, в какой-то момент при установке открывается диалоговое окно, которое позволяет мне ввести мой пароль root. Т.е. взаимодействие человека обязательно.

Как я могу обойти этот экран во время установки и избежать взаимодействия с человеком, все еще используя apt-get для установки MySQL?

Люк
источник
См. Также stackoverflow.com/questions/1202347/…
Джеймисон Беккер

Ответы:

31

Вам нужно предварительно заполнить базу данных debconf. Прежде чем вы попробуете, сначала необходимо установить debconf.

Версия mysql и ubuntu может изменить строку:

echo mysql-server mysql-server/root_password select PASSWORD | debconf-set-selections
echo mysql-server mysql-server/root_password_again select PASSWORD | debconf-set-selections

Например, вы сделали это вместо этого:

echo mysql-server-5.0 mysql-server/root_password password PASSWORD | debconf-set-selections
echo mysql-server-5.0 mysql-server/root_password_again password PASSWORD | debconf-set-selections
Стивен
источник
Да, это работает, но после установки я не могу войти в mysql (mysql -u root, он отображает запрещенное разрешение).
Самнанг
3
Как насчетmysql -u root -p
PhilT
Также необходимо отключить показ пароля, как показано ниже, как показано ниже, или вам снова будет предложено ввести пароль.
Джеймисон Беккер
5

Хотя FAI и подобные системы полезны в корпоративной среде (и он должен знать о них), они, к сожалению, не являются панацеей.

Например, что если он работает на удаленных машинах, возможно, на хостингах, на арендованных серверах, совместно расположенных серверах без доверенной или выделенной сети или в облачной среде, такой как EC2? Никакая сетевая загрузка PXE не будет работать там. Puppet и Chef кажутся более универсальными инструментами, которые могут ему помочь.

cat << EOF | DEBIAN_FRONTEND=noninteractive DEBCONF_DB_FALLBACK=Pipe /usr/bin/apt-get install somepackage

Name: ...
Template: ...
Value: ...
Owners: ...
Variables:
   ....
   ....
EOF

Вы можете получить правильные значения из базы данных debconf в системе, которая уже была настроена. Эта техника позволяет вам все это вставить в один скрипт. Например, из /var/cache/debconf/passwords.dat (обратите внимание на возможность работы как с 5.0 на Debian, так и с 5.1 и Ubuntu, дополнительные записи ничего не повредят):

cat << EOF | DEBIAN_FRONTEND=noninteractive DEBCONF_DB_FALLBACK=Pipe /usr/bin/apt-get -qq -y install mysql-server
Name: mysql-server/root_password
Template: mysql-server/root_password
Value: YOURPASSWORD
Owners: mysql-server-5.1
Flags: seen

Name: mysql-server/root_password_again
Template: mysql-server/root_password_again
Value: YOURPASSWORD
Owners: mysql-server-5.1
Flags: seen

Name: mysql-server/root_password
Template: mysql-server/root_password
Value: YOURPASSWORD
Owners: mysql-server-5.0
Flags: seen

Name: mysql-server/root_password_again
Template: mysql-server/root_password_again
Value: YOURPASSWORD
Owners: mysql-server-5.0
Flags: seen

EOF

Другой способ, возможно, проще: (собрать ответы из debconf-get-selections или debconf-show из пакета debconf-utils):

echo "Installing MySQL 5.0.."
sudo apt-get install -qqy debconf-utils
cat << EOF | debconf-set-selections
mysql-server-5.0 mysql-server/root_password password YOURPASSWORD
mysql-server-5.0 mysql-server/root_password_again password YOURPASSWORD
mysql-server-5.0 mysql-server/root_password seen true
mysql-server-5.0 mysql-server/root_password_again seen true
EOF
/usr/bin/apt-get -y install mysql-server-5.0 mysql-server

После того как вы запустите debconf-set-selections, проверьте свои ответы: cat /var/cache/debconf/passwords.dat

И, во время тестирования, обязательно удалите и очистите все базы данных (особенно базу данных mysql, где она хранится) и исправьте конфигурационную базу данных на случай, если они были повреждены:

apt-get --purge remove mysql-server*; /usr/share/debconf/fix_db.pl 

Несколько советов по этому поводу: 1) У вас ДОЛЖНЫ быть флажок «Виден» и пароль _again. 2) Вы НЕ ДОЛЖНЫ ставить кавычки вокруг пароля. Он перейдет в запрос MySQL без кавычек, поэтому вы должны сами его заключить в кавычки, если это необходимо. Это также означает отсутствие пробелов (я думаю). 3) Если у вас возникли проблемы, выполните предварительный отбор вручную, а затем запустите установку MySQL самостоятельно (в обычном терминале / tty) и посмотрите, что debconf сообщает вам. Там будут рассказываться предупреждения и ошибки.

Джеймисон Беккер
источник
3

Если у вас есть несколько серверов, которые нужно перестроить, я настоятельно рекомендую вместо написания сценария оболочки взглянуть на что-то вроде Puppet . Puppet имеет описательный язык, поэтому вы определяете, как должна выглядеть система, а не как ее получить. Тип пакета имеет опцию responsefile, которая позволяет вам определять ответы debconf в ответе Стивена.

Дэвид Пашли
источник
1

Могу ли я также предложить вам автоматизировать процесс подготовки сервера из сырого железа?

В настоящее время в FAI есть профили для установки большинства основных систем на основе Debian, включая Ubuntu, из сети. Это, конечно, просто расширение для ответа марионетки, которое является расширением ответа debconf.

Комбинация перехода из FAI с последующей настройкой с помощью puppet на роли сервера (где puppet будет использовать соответствующие инструменты для вашей системы, такие как debconf для Debian (-likes) довольно автоматически), в наши дни довольно популярна и не должна быть слишком Трудно найти примеры, которые соответствуют тому, что вы хотите сделать довольно близко.

Основным дополнительным преимуществом наличия сервера промежуточной конфигурации / конфигурации является то, что это также логичное место для контроля конфигурации вашей версии, например, с помощью git (который имеет преимущество именования состояний репозитория по контрольной сумме, так что вы защищены от повреждения как пока вы записываете правильные контрольные суммы вниз), для действительно чистого и воспроизводимого процесса.

Бернд Хауг
источник