2014-04-29 7 views
9

Ich richte ein Bash-Skript ein, um den Aufbau einer LAMP-Umgebung zu automatisieren.ein leeres Passwort für mysql über debconf-set-selections vorkonfigurieren

ich debconf-set-selections bin mit Optionen festlegen, bevor die Installation von MySQL, phpMyAdmin, etc ...

Es funktioniert vor allem groß. Aber das Problem ist, dass ich zu ein leeres Passwort für MySQL gesetzt und es fragt nach wie vor für das Passwort bei der Installation auch mit den Linien eingegeben vor:

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

Antwort

8

EDIT:This answer below schlägt eine mögliche Lösung, die 15,10 für Ubuntu funktionieren könnte, aber es ist für mich auf Ubuntu 14.04 gescheitert.


Es ist derzeit unmöglich, direkt für mysql-server während der Installation ein leeres Passwort setzen debconf-set-selections verwenden, aber es gibt Möglichkeiten, dieses Problem zu umgehen und ein leeres Passwort dennoch zu erzwingen.


Der direkte Ansatz des Passworts auf die leere Zeichenfolge Vorkonfiguration schlägt fehl, weil:

  1. Das config Skript, das das Passwort aus der Datenbank sofort liest seine seen Flag auf false setzt, sobald sie das Passwort erkennt eingestellt ist auf die leere Zeichenfolge:

    db_input high mysql-server/root_password || true 
    db_go 
    db_get mysql-server/root_password 
    # if password isn't empty we ask for password verification 
    if [ -z "$RET" ]; then 
        db_fset mysql-server/root_password seen false 
        db_fset mysql-server/root_password_again seen false 
        break 
    fi 
    
  2. dieDas Skriptwird während des Installationsprozesses mehrmals ausgeführt.

Somit beeinflusst das Passwort auf die leere Zeichenfolge Vorkonfiguration nur die erste Ausführung des config Skript, da der seen Flag true zu diesem Zeitpunkt festgelegt wird, während weitere Anrufungen des gleichen Skript die Frage angezeigt an den Benutzer, da der Wert des Flags seen bereits bei der Ausführung auf false gesetzt wurde.


Allerdings ist es möglich, debconf von Fragen zusammen mit anderen Mitteln zu fragen, aber diese Methoden auf alle Fragen gelten zu verhindern, und nicht nur die Passwort-bezogene diejenigen.Zum Beispiel lassen die einem der folgenden würde das Kennwort leer:

  • Set debconf 's Frontend noninteractive:

    DEBIAN_FRONTEND=noninteractive apt-get install [-y] [-q] mysql-server 
    
  • Set debconf' s Prioritätsstufe critical:

    DEBIAN_PRIORITY=critical apt-get install [-y] [-q] mysql-server 
    

    Dies ist wahrscheinlich vorzuziehen, da es die Anzeige kritischer Nachrichten erlaubt.

+1

Dies war die einzige Antwort, die für mich arbeitete – ognockocaten

+0

Ich vergaß, dass ich diese Frage gestellt hatte. Vor einem Jahr habe ich es mit dem "DEBIAN_FRONTEND = noninteractive" Weg gelöst und bin seither glücklich damit. – piroux

0

tatsächlich Versuchen Sie, ein leeres Argument

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

ich denke, dass Ihr Problem ist, dass direkt vor ‚Passwort‘ Sie müssen das Wort ‚string‘ wie folgt hinzuzufügen:

echo "mysql-server-5.5 mysql-server/root_password string password" | debconf-set-selections 

b tw dies tut das Gleiche, aber ich denke, seine cool:

debconf-set-selections <<< "mysql-server-5.5 mysql-server/root_password string password" 
8

Derzeit es ist möglich, dies zu tun, aber es ist ein wenig kompliziert.

Sie müssen Anführungszeichen explizit ein leeres Passwort zu markieren, wie folgt aus:

sudo debconf-set-selections <<< "mysql-server mysql-server/root_password password \"''\"" 

gerade getestet auf Ubuntu 15.10, wirkt wie ein Zauber.