Встановіть MySQL на Ubuntu без запиту пароля


305

Як написати сценарій для встановлення MySQL-сервера на Ubuntu?

sudo apt-get install mysql встановить, але він також попросить ввести пароль у консолі.

Як це зробити неінтерактивним способом? Тобто написати сценарій, який може надати пароль?

#!/bin/bash
sudo apt-get install mysql  # To install MySQL server

# How to write script for assigning password to MySQL root user
# End

Відповіді:


431
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password your_password'
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password your_password'
sudo apt-get -y install mysql-server

Для конкретних версій, таких як mysql-server-5.6, вам потрібно вказати версію приблизно так:

sudo debconf-set-selections <<< 'mysql-server-5.6 mysql-server/root_password password your_password'
sudo debconf-set-selections <<< 'mysql-server-5.6 mysql-server/root_password_again password your_password'
sudo apt-get -y install mysql-server-5.6

Для mysql-спільноти-сервера ключі дещо відрізняються:

sudo debconf-set-selections <<< 'mysql-community-server mysql-community-server/root-pass password your_password'
sudo debconf-set-selections <<< 'mysql-community-server mysql-community-server/re-root-pass password your_password'
sudo apt-get -y install mysql-community-server

Замініть ваш_парус на потрібний пароль кореня. (здається, що ваш_password також може бути порожнім для пустого пароля root.)

Якщо ваша оболонка не підтримує тут-рядки ( zsh , ksh93 та bash підтримують їх), використовуйте:

echo ... | sudo debconf-set-selections 

1
Не забудьте змінити mysql-server-5.1частину на поточну версію mysql!
Дін Швидше

19
Ця відповідь перекладається на MariaDB наступним чином, замінюючи mysql-server-<version>на maria-db-<server>. Наступна mysql-server/
частота

5
- <version> частина непотрібна - працює як принадність для мене, і більш загальна без цього.
msztolcman

2
Це добре працює з післяsudo apt-get install debconf-utils
Назін

4
@Lukx для MariaDB, пакет - mariadb-сервер, а не maria-db-сервер. Дякую за замітку.
ywarnier

238

Це повинно зробити трюк

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

Звичайно, він залишає вам порожній пароль для кореня - тому ви захочете запустити щось на кшталт

mysqladmin -u root password mysecretpasswordgoeshere

Після цього додати пароль до акаунта.


3
Тестовано та працює в новому екземплярі Ubuntu 12.04 з MySQL 5.5
Альберто Мегія

21
Якщо ви встановлюєте з sudo, використовуйте -E, щоб змінна середовище була передана разом. Напр. sudo -E apt-get -q -установлювати mysql-сервер.
Патрік Каллен

35
Ви також можете додати змінну env безпосередньо в команду (не забруднюючи зовнішнє середовище), попередньо додавши її до -DEBIAN_FRONTEND=noninteractive apt-get -y install mysql-server
yoniLavi

2
Пароль mysql буде зберігатися в журналі bash, коли це буде зроблено таким чином.
DutGRIFF

3
Працював для мене на Debian 8.2 - я поєднався з @PatrickCullen та @yoniLavi, щоб отримати - DEBIAN_FRONTEND=noninteractive sudo -E apt-get -q -y install mysql-serverпрацював як шарм!
MuffinTheMan

31

Ще один спосіб змусити його працювати:

echo "mysql-server-5.5 mysql-server/root_password password root" | debconf-set-selections
echo "mysql-server-5.5 mysql-server/root_password_again password root" | debconf-set-selections
apt-get -y install mysql-server-5.5

Зауважте, що це просто встановлює пароль на "root". Мені не вдалося встановити порожній пароль, використовуючи прості цитати '', але мені це рішення було достатньо.

На основі рішення тут .


1
echo 'mysql-server-5.5 mysql-server / root_password password' | sudo debconf-set-selections працює для визначення пустого пароля для мене.
Цунео Йошіока

4
@TsuneoYoshioka не працює для мене. Якщо я поставлю два пробіли в кінці, він встановлює мій пароль на один пробіл. З одним простором він все ще намагається дати підказку, а потім накрутить установку.
квітня

3

Використання:

sudo DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server

sudo mysql -h127.0.0.1 -P3306 -uroot -e"UPDATE mysql.user SET password = PASSWORD('yourpassword') WHERE user = 'root'"

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