Zainstaluj MySQL na Ubuntu bez pytania o hasło

305

Jak napisać skrypt, aby zainstalować serwer MySQL na Ubuntu?

sudo apt-get install mysql zainstaluje się, ale poprosi również o podanie hasła w konsoli.

Jak to zrobić w sposób nieinteraktywny? Czyli napisać skrypt, który może podać hasło?

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

# How to write script for assigning password to MySQL root user
# End
Venkat
źródło

Odpowiedzi:

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

W przypadku określonych wersji, takich jak mysql-server-5.6, musisz określić wersję w następujący sposób:

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

W przypadku mysql-community-server klucze są nieco inne:

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

Zamień swoje hasło na żądane hasło roota. (wygląda na to, że twoje_hasło można również pozostawić puste dla pustego hasła roota).

Jeśli twoja powłoka nie obsługuje ciągów tutaj ( obsługują je zsh , ksh93 i bash ), użyj:

echo ... | sudo debconf-set-selections 
Dimitre Radoulov
źródło
1
Pamiętaj, aby zmienić mysql-server-5.1część na bieżącą wersję mysql!
Dean Rather
19
Ta odpowiedź przekłada się na MariaDB w następujący sposób, zastępując mysql-server-<version>maria-db-<server>. Następujące wydarzenie mysql-server/ pozostaje nietknięte
Lukx
5
- <wersja> część jest niepotrzebna - działa jak urok dla mnie i jest bardziej ogólna bez tego.
msztolcman
2
To działa dobrze w przypadku posudo apt-get install debconf-utils
Nazin
4
@Lukx dla MariaDB, pakiet to mariadb-server, a nie maria-db-server. W każdym razie dzięki za notatkę.
ywarnier
238

To powinno załatwić sprawę

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

Oczywiście pozostawia ci puste hasło roota - więc będziesz chciał uruchomić coś takiego

mysqladmin -u root password mysecretpasswordgoeshere

Następnie dodaj hasło do konta.

Mez
źródło
3
Przetestowane i działające w nowej instancji Ubuntu 12.04 z MySQL 5.5
Alberto Megía
21
Jeśli instalujesz za pomocą sudo, użyj -E, aby przekazać zmienną środowiskową. Na przykład. sudo -E apt-get -q -y zainstaluj serwer mysql.
Patrick Cullen,
35
Możesz także dodać zmienną env bezpośrednio do polecenia (bez zanieczyszczania środowiska zewnętrznego), przygotowując ją -DEBIAN_FRONTEND=noninteractive apt-get -y install mysql-server
yoniLavi
2
Hasło mysql zostanie zapisane w dzienniku bash po wykonaniu tej czynności.
DutGRIFF
3
Pracowałem dla mnie nad Debianem 8.2 - połączyłem z @PatrickCullen i @yoniLavi, aby uzyskać - DEBIAN_FRONTEND=noninteractive sudo -E apt-get -q -y install mysql-serverpracował jak urok!
MuffinTheMan
31

Kolejny sposób, aby to działało:

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

Zauważ, że to po prostu ustawia hasło na „root”. Nie udało mi się ustawić pustego hasła przy użyciu prostych cytatów '', ale to rozwiązanie było dla mnie wystarczające.

Na podstawie rozwiązania tutaj .

chrisfargen
źródło
1
echo 'mysql-server-5.5 mysql-server / root_password hasło' | sudo debconf-set-selections działa na określenie dla mnie pustego hasła.
Tsuneo Yoshioka,
4
@TsuneoYoshioka Nie działa dla mnie. Jeśli wstawię dwie spacje na końcu, moje hasło zostanie ustawione na jedną spację. Z jednym miejscem wciąż próbuje wyświetlić monit, a następnie zepsuć instalację.
mpen
3

Posługiwać się:

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'"
BALAJI POTHULA
źródło
Dzięki! definiowanie zmiennych poza sudo zawsze mnie dopada.
Gaston Sanchez,