Установка Percona/MySQL без присмотра на Ubuntu

Я могу установить MYSQL на Ubuntu без подсказок с кодом ниже:

dbpass="mydbpassword"
export DEBIAN_FRONTEND=noninteractive
echo mysql-server-5.1 mysql-server/root_password password $dbpass | debconf-set-selections
echo mysql-server-5.1 mysql-server/root_password_again password $dbpass | debconf-set-selections
apt-get -y install mysql-server

Часть с параметрами debconf-set, которые я получил где-то в сети (может быть, здесь не помню), и она работает нормально для меня до сих пор. Я не настолько эксперт, чтобы понять, как он работает, но он это делает.

Однако я хочу сделать то же самое для Percona. Я установил менеджер пакетов apt для работы с apt-get для percona. Итак, теперь мой код выглядит следующим образом:

dbpass="dbpass" && export dbpass
export DEBIAN_FRONTEND=noninteractive
echo percona-server-server-5.5 percona-server-server-5.5/root_password password $dbpass | debconf-set-selections
echo percona-server-server-5.5 percona-server-server-5.5/root_password_again password $dbpass | debconf-set-selections
apt-get -y install percona-server-server-5.5

Однако Percona устанавливается, но без пароля, как определено. Я знаю, что у меня что-то отсутствует в бит debconf.

Я был бы признателен за некоторые рекомендации здесь.

Спасибо заранее.

Ответы

Ответ 1

Я действительно нашел, что ответ здесь установить mysql на ubuntu без подсказки пароля, который предложил

export DEBIAN_FRONTEND=noninteractive apt-get -q -y install mysql-server

Работал и оставил меня с пользователем root без пароля, что я и хотел.

Ответ 2

Вторая часть debconf-prefix не должна содержать номер версии:

echo percona-server-server-5.5 percona-server-server/root_password password $dbpass | sudo debconf-set-selections
echo percona-server-server-5.5 percona-server-server/root_password_again password $dbpass | sudo debconf-set-selections

Для 5.6:

echo percona-server-server-5.6 percona-server-server/root_password password $dbpass | sudo debconf-set-selections
echo percona-server-server-5.6 percona-server-server/root_password_again password $dbpass | sudo debconf-set-selections

Ответ 3

Думаю, я понял это

echo "percona-server-server-5.5 mysql-server/root_password password mypassword" | debconf-set-selections
echo "percona-server-server-5.5 mysql-server/root_password_again password mypassword" | debconf-set-selections

Не используйте export DEBIAN_FRONTEND=noninteractive. Если записи debconf верны, то вам все равно не будет предложено. Если они неправильны, и вы используете noninteractive, тогда приглашение будет продолжаться с пустым паролем.

Так как Percona 'перехватывает' MySQL, проверьте правильность установки с помощью

service mysql status

и вы узнаете, что это percona, если вы видите что-то вроде

mysql.service - LSB: запуск и остановка демон mysql (Percona Server)

Затем, наконец, проверьте правильность установки пароля

mysql -u user -pmypassword

EDIT: При этом для более новой версии percona ответ F21 работал у меня. Вы можете проверить записи в /var/cache/debconf/passwords.dat

Ответ 4

вы всегда можете выполнить обычную установку, а затем script:

  • убийство сервера mysql
  • начиная с skip-grant-tables
  • настройка паролей
  • убийство временно запущенного mysql без аутентификации
  • запуск регулярного mysql

Ответ 5

Если вы понимаете, что происходит под капотом, это облегчает отладку и выясняет, почему это не работает.

Когда вы устанавливаете пакет debian часто, когда у вас возникают вопросы о лицензиях, паролях, местоположениях и т.д. Все эти значения хранятся в debconf. Если вы хотите выполнить автоматическую установку, вы можете предварительно загрузить эти ответы в debconf, чтобы вам не были заданы эти вопросы, поскольку они уже ответили.

Задача возникает, когда вы понимаете, как правильно ответить на эти вопросы. Для этого вам сначала нужно установить debconf-utils

apt install debconf-utils

Затем вам нужно вручную установить пакет.

В моем случае я устанавливаю пакет percona-xtradb-cluster-57.

wget https://repo.percona.com/apt/percona-release_0.1-4.$(lsb_release -sc)_all.deb
sudo dpkg -i percona-release_0.1-4.$(lsb_release -sc)_all.deb
sudo apt-get update -y
sudo apt-get install -y percona-xtradb-cluster-57

После этого вы можете получить настройки, которые были установлены с помощью инструмента deb-get-selections.

debconf-get-selections | grep percona

В ответе вы увидите настройки, которые были установлены. В этом случае

percona-xtradb-cluster-server-5.7   percona-xtradb-cluster-server-5.7/root-pass password
percona-xtradb-cluster-server-5.7   percona-xtradb-cluster-server-5.7/re-root-pass  password
percona-xtradb-cluster-server-5.7   percona-xtradb-cluster-server-5.7/remove-data-dir   boolean false
percona-xtradb-cluster-server-5.7   percona-xtradb-cluster-server-5.7/root-pass-mismatch    error
percona-xtradb-cluster-server-5.7   percona-xtradb-cluster-server-5.7/data-dir  note

Теперь вы можете скопировать значения, которые вы хотите установить. В моем случае я хочу автоматически установить пароль root.

В вашем сценарии автоматической установки вы можете теперь использовать инструмент debconf-set-selections, чтобы автоматизировать настройку значений для пароля root и вопроса подтверждения пароля root.

echo "percona-xtradb-cluster-server-5.7   percona-xtradb-cluster-server-5.7/root-pass password my_temp_password" | debconf-set-selections
echo "percona-xtradb-cluster-server-5.7   percona-xtradb-cluster-server-5.7/re-root-pass  password my_temp_password" | debconf-set-selections

Счастливая автоматизация!