Installieren Sie MySQL unter Ubuntu ohne Passwortabfrage

305

Wie schreibe ich ein Skript, um den MySQL-Server unter Ubuntu zu installieren?

sudo apt-get install mysql wird installiert, fordert aber auch zur Eingabe eines Kennworts in die Konsole auf.

Wie mache ich das nicht interaktiv? Das heißt, schreiben Sie ein Skript, das das Passwort bereitstellen kann?

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

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

Antworten:

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

Für bestimmte Versionen, z. B. mysql-server-5.6, müssen Sie die Version wie folgt angeben:

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

Für MySQL-Community-Server unterscheiden sich die Schlüssel geringfügig:

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

Ersetzen Sie Ihr_Passwort durch das gewünschte Root-Passwort. (Es scheint, dass your_password auch für ein leeres Root-Passwort leer gelassen werden kann.)

Wenn Ihre Shell Here-Strings nicht unterstützt ( zsh , ksh93 und bash unterstützen sie), verwenden Sie:

echo ... | sudo debconf-set-selections 
Dimitre Radoulov
quelle
1
Stellen Sie sicher, dass Sie das mysql-server-5.1Teil auf die aktuelle MySQL-Version ändern !
Dean Rather
19
Diese Antwort übersetzt MariaDB wie folgt durch den Ersatz mysql-server-<version>mit maria-db-<server>. Das folgende Vorkommen von mysql-server/ bleibt unberührt
Lukx
5
- <version> Teil ist unnötig - funktioniert für mich wie ein Zauber und ist ohne das allgemeiner.
Msztolcman
2
Dies funktioniert gut mit nachsudo apt-get install debconf-utils
Nazin
4
@ Lukx für MariaDB, das Paket ist Mariadb-Server, nicht Maria-DB-Server. Trotzdem danke für den Hinweis.
Ywarnier
238

Dies sollte den Trick tun

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

Natürlich haben Sie ein leeres Root-Passwort - also möchten Sie so etwas wie ausführen

mysqladmin -u root password mysecretpasswordgoeshere

Anschließend fügen Sie dem Konto ein Passwort hinzu.

Mez
quelle
3
Getestet und in einer neuen Ubuntu 12.04-Instanz mit MySQL 5.5
Alberto Megía
21
Wenn Sie mit sudo installieren, verwenden Sie -E, damit die Umgebungsvariable weitergegeben wird. Z.B. sudo -E apt-get -q -y installiert mysql-server.
Patrick Cullen
35
Sie können die env-Variable auch direkt in den Befehl einfügen (ohne die externe Umgebung zu verschmutzen), indem Sie sie vor -DEBIAN_FRONTEND=noninteractive apt-get -y install mysql-server
yoniLavi
2
Das MySQL-Passwort wird auf diese Weise in einem Bash-Protokoll gespeichert.
DutGRIFF
3
Arbeitete für mich an Debian 8.2 - Ich habe mich aus @PatrickCullen und @yoniLavi zusammengetan, um DEBIAN_FRONTEND=noninteractive sudo -E apt-get -q -y install mysql-server- wie ein Zauber gearbeitet zu werden!
MuffinTheMan
31

Ein anderer Weg, damit es funktioniert:

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

Beachten Sie, dass dies einfach das Passwort auf "root" setzt. Ich konnte es nicht schaffen, ein leeres Passwort mit einfachen Anführungszeichen zu setzen '', aber diese Lösung war für mich ausreichend.

Basierend auf einer Lösung hier .

chrisfargen
quelle
1
echo 'mysql-server-5.5 mysql-server / root_password password' | sudo debconf-set-selections gibt ein leeres Passwort für mich an.
Tsuneo Yoshioka
4
@ TsuneoYoshioka Funktioniert nicht für mich. Wenn ich am Ende zwei Leerzeichen setze, wird mein Passwort auf ein einzelnes Leerzeichen gesetzt. Mit einem Leerzeichen versucht es immer noch, die Eingabeaufforderung zu geben, und vermasselt dann die Installation.
Mpen
3

Verwenden:

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
quelle
Vielen Dank! Das Definieren von Variablen außerhalb von sudo bringt mich immer weiter.
Gaston Sanchez