Установка mysql-сервера в скрипт vagrant bootstrap shell (как пропустить настройку?)

16

Я попытался установить mysql-сервер на мою виртуальную машину Vagrant Ubuntu 12.04 LTS. Когда я это сделал, настройка запускается автоматически. Я могу видеть это в выводе Vagrant:

Хотя это и не обязательно, настоятельно рекомендуется установить пароль ││ для административного «корневого» пользователя MySQL. ││││ Если это поле оставить пустым, пароль не будет изменен. ││││ Новый пароль для MySQL "root" пользователь

После этого выходной текст становится ненадежным, ± ├⎺ ⎼␊⎻┌▒␌␊ ┌␋␉⎽─┌␋├␊3-0 3.7.9-2┤␉┤┼├┤1 (┤⎽␋┼± ...но довольно длинным и насыщенным зелеными и красными цветами, поэтому я считаю, что остальная часть установки завершена.

Но я могу подтвердить отсутствие установки после:

sudo apt-get install --just-print mysql-server-5.5 
...
The following NEW packages will be installed:
  mysql-server-5.5

Как я могу отправить правильные сигналы через скрипт оболочки для настройки сервера MYSQL? Или, если я не могу, как я могу остановить автоматический запуск конфигурации или завершить установку после ее запуска, пока пакет еще не установлен?

Сэм
источник
Если остальная часть установки завершается , она не позволит вам выполнить установку заново. Вы пытались установить пароль перед установкой?
Антон
@Anthon Извините, я не думаю, что я объяснил это хорошо в своем посте: я могу вручную все это настроить, но моя цель - автоматизировать как можно большую часть моих настроек. И у меня есть много шагов после этого, которые зависят от установленного mysql (например, установка rvm).
Сэм
Если проблемы не вызваны нечистой системой (попробуйте установить в чистой настройке виртуальной машины), это звучит как проблема с самим пакетом. В таких случаях я иногда исправлял установочный файл (не полная перестройка, просто извлечение / изменение / сборка) и подал его из локального репозитория.
Антон
@Anthon: / Я надеялся найти решение, подобное либо: а) существует серверный пакет MYSQL, который не запускает мастер настройки автоматически, либо б) существует способ bash-y для перехвата таких запусков ( apt-get install mysql-server | some_trap_cmd >> some.file). Похоже, может быть, такой вещи не существует?
Сэм
Проблема в том, что apt-get запускает сценарии в файле установщика, вы не поймаете ловушку в них, если не исправите сценарии. Вы также можете взглянуть на 5.6 mysql и установить его с панели запуска , но это может создать больше проблем при удалении всех зависимостей, но, возможно, проблемы с установкой исчезли.
Антон

Ответы:

29

Вы можете установить корневой пароль MySQL в своем файле начальной загрузки, добавив команды debconf-set-selections перед запуском установки apt-get:

#!/usr/bin/env bash

debconf-set-selections <<< 'mysql-server mysql-server/root_password password MySuperPassword'
debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password MySuperPassword'
apt-get update
apt-get install -y mysql-server

Я предполагаю, что это работает на любой системе на основе Debian. Я использую это каждый день, коробка строится полностью автоматически.

CCoffee
источник
1
Потрясающие! Я не знал эту команду
AlvaroAV
1
Я не debconf-set-selectionsсуществовал. Это сработало отлично. Спасибо!
Сэм
3

Возможно, вы захотите взглянуть на Puppet - он отлично подходит для автоматической установки и настройки программного обеспечения. Есть также модуль MySQL , но я не пробовал.

l0b0
источник