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


23

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

Як я можу обійти цей екран під час встановлення та уникнути взаємодії між людьми, використовуючи apt-get для встановлення MySQL?


Відповіді:


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-мережа. Лялька та шеф-кухар здаються інструментами загального призначення, які можуть йому допомогти.

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-select ili 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-select, перевірте свої відповіді: 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) і подивіться, що вам каже decon. Він повідомить вам попередження та помилки там.


3

Якщо у вас є кілька серверів, які вам потрібно відновити, я настійно рекомендую переглянути щось на зразок Лялечки, а не писати сценарій оболонки. Лялька має описову мову, тож ви визначаєте, як ви хочете виглядати систему, а не як її туди дістати. Тип пакету має опцію файлу відповідей, яка дозволяє визначити відповіді debconf у відповіді Стівена.


1

Чи можу я запропонувати вам автоматизувати процес встановлення сервера із сировини заліза?

В даний час FAI має профілі для встановлення більшості основних систем на базі Debian, включаючи Ubuntu, з мережі. Це, звичайно, лише розширення відповіді на маріонетку, яка є продовженням відповіді debconf.

Поєднання поетапно з FAI, а потім налаштування ляльок на серверні ролі (де маріонетка використовуватиме належні інструменти для вашої системи, як debconf для Debian (-подобається) досить автоматично), досить популярна в наші дні, і це не повинно бути занадто важко знайти приклади, які б досить тісно відповідали тому, що ви хочете зробити.

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


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.