Установите 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-community-server ключи немного отличаются:

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

Замените your_password на нужный пароль root. (кажется, ваш_пароль также можно оставить пустым для пустого пароля 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/ остается нетронутым
Lukx

5
- <version> часть не нужна - работает для меня как обаяние, и без нее более общая.
msztolcman

2
Это хорошо работает с послеsudo apt-get install debconf-utils
Назин

4
@Lukx для MariaDB, пакет mariadb-server, а не maria-db-server. В любом случае, спасибо за примечание.
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 -y установить mysql-сервер.
Патрик Каллен

35
Вы также можете добавить переменную env непосредственно в команду (без загрязнения внешней среды), DEBIAN_FRONTEND=noninteractive apt-get -y install mysql-server
предварительно добавив

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' | sudo debconf-set-selections позволяет указать пустой пароль для меня.
Цунео Йошиока

4
@TsuneoYoshioka не работает для меня. Если я ставлю два пробела в конце, он устанавливает мой пароль на один пробел. С одним пробелом он все еще пытается выдать подсказку, а затем испортит установку.
mpen

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'"

Спасибо! определение переменных за пределами sudo всегда меня заводит.
Гастон Санчес
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.