Skriptbasierte Installation von MySQL unter Ubuntu


23

Ich muss ein Skript schreiben, das meinen Server von einer neuen Ubuntu-Server-Installation erstellt. Unter anderem Apache und PHP muss MySQL installiert werden. Das einzige Problem hierbei ist, dass bei der Installation von MySQL mit apt-get irgendwann ein Dialogfeld angezeigt wird, in dem ich mein root-Passwort eingeben kann. Das heißt, menschliche Interaktion ist erforderlich.

Wie kann ich diesen Bildschirm während der Installation umgehen und menschliche Interaktion vermeiden, während ich MySQL weiterhin mit apt-get installiere?


Antworten:


31

Sie müssen die Debconf-Datenbank voreinstellen. debconf muss zuerst installiert werden, bevor Sie dies versuchen.

Die Version von MySQL und Ubuntu könnte die Zeile ändern:

echo mysql-server mysql-server/root_password select PASSWORD | debconf-set-selections
echo mysql-server mysql-server/root_password_again select PASSWORD | debconf-set-selections

Zum Beispiel haben Sie dies stattdessen benötigt:

echo mysql-server-5.0 mysql-server/root_password password PASSWORD | debconf-set-selections
echo mysql-server-5.0 mysql-server/root_password_again password PASSWORD | debconf-set-selections

Ja, es funktioniert, aber nach der Installation kann ich mich nicht bei mysql anmelden (mysql -u root zeigt die verweigerte Berechtigung an).
Samnang

3
Wie wäre esmysql -u root -p
PhilT

Außerdem muss das Flag 'seen' wie unten gezeigt angezeigt werden, um die Kennwortabfrage zu deaktivieren. Andernfalls werden Sie erneut zur Kennwortabfrage aufgefordert.
Jamieson Becker

5

Während FAI und ähnliche Systeme in einer Unternehmensumgebung hilfreich sind (und er sollte sich damit auskennen), sind sie leider kein Allheilmittel.

Was ist zum Beispiel, wenn er auf Remotecomputern arbeitet, z. B. auf gehosteten, gemieteten Servern, gemeinsam genutzten Servern ohne vertrauenswürdiges oder dediziertes Netzwerk oder in einer Cloud-Umgebung wie EC2? Dort funktioniert kein PXE-Netboot. Marionette und Koch scheinen jedoch allgemeinere Werkzeuge zu sein, die ihm helfen könnten.

cat << EOF | DEBIAN_FRONTEND=noninteractive DEBCONF_DB_FALLBACK=Pipe /usr/bin/apt-get install somepackage

Name: ...
Template: ...
Value: ...
Owners: ...
Variables:
   ....
   ....
EOF

Auf einem bereits eingerichteten System können Sie die korrekten Werte aus der debconf-Datenbank abrufen. Mit dieser Technik können Sie das Ganze in einem einzigen Shell-Skript zusammenfassen. Zum Beispiel aus /var/cache/debconf/passwords.dat (beachten Sie, dass zusätzliche Einträge unter Debian und 5.1 und Ubuntu nicht schaden):

cat << EOF | DEBIAN_FRONTEND=noninteractive DEBCONF_DB_FALLBACK=Pipe /usr/bin/apt-get -qq -y install mysql-server
Name: mysql-server/root_password
Template: mysql-server/root_password
Value: YOURPASSWORD
Owners: mysql-server-5.1
Flags: seen

Name: mysql-server/root_password_again
Template: mysql-server/root_password_again
Value: YOURPASSWORD
Owners: mysql-server-5.1
Flags: seen

Name: mysql-server/root_password
Template: mysql-server/root_password
Value: YOURPASSWORD
Owners: mysql-server-5.0
Flags: seen

Name: mysql-server/root_password_again
Template: mysql-server/root_password_again
Value: YOURPASSWORD
Owners: mysql-server-5.0
Flags: seen

EOF

Eine andere, vielleicht einfachere Methode: (Sammeln Sie Antworten aus debconf-get-selections oder debconf-show aus dem Paket debconf-utils.)

echo "Installing MySQL 5.0.."
sudo apt-get install -qqy debconf-utils
cat << EOF | debconf-set-selections
mysql-server-5.0 mysql-server/root_password password YOURPASSWORD
mysql-server-5.0 mysql-server/root_password_again password YOURPASSWORD
mysql-server-5.0 mysql-server/root_password seen true
mysql-server-5.0 mysql-server/root_password_again seen true
EOF
/usr/bin/apt-get -y install mysql-server-5.0 mysql-server

Nachdem Sie debconf-set-selections ausgeführt haben, überprüfen Sie Ihre Antworten: cat /var/cache/debconf/passwords.dat

Stellen Sie beim Testen sicher, dass Sie alle Datenbanken (insbesondere die mysql-Datenbank, in der diese gespeichert ist) entfernen und bereinigen und die Konfigurationsdatenbank reparieren, falls sie beschädigt wurde:

apt-get --purge remove mysql-server*; /usr/share/debconf/fix_db.pl 

Ein paar Tipps dazu: 1) Sie MÜSSEN das seen-Flag und das Passwort _again haben. 2) Sie dürfen das Passwort nicht in Anführungszeichen setzen. Es wird ohne Anführungszeichen in eine MySQL-Abfrage eingegeben, sodass Sie es bei Bedarf selbst angeben müssen. Das bedeutet auch keine Leerzeichen (glaube ich). 3) Wenn Sie Probleme haben, führen Sie die Voreinstellung von Hand durch und führen Sie dann die MySQL-Installation direkt selbst aus (in einem normalen Terminal / tty) und sehen Sie, was Debconf Ihnen sagt. Dort werden Ihnen Warnungen und Fehler angezeigt.


3

Wenn Sie mehrere Server haben, die Sie neu erstellen müssen, empfehle ich Ihnen dringend, sich etwas wie Puppet anzuschauen, anstatt ein Shell-Skript zu schreiben. Puppet hat eine beschreibende Sprache, so dass Sie definieren, wie das System aussehen soll, und nicht, wie es dorthin gelangen soll. Der Pakettyp verfügt über eine Antwortdatei-Option, mit der Sie die debconf-Antworten in Stevens Antwort definieren können.


1

Darf ich Ihnen auch vorschlagen, den Server-Staging-Prozess vom Roheisen zu automatisieren?

FAI verfügt heutzutage über Profile, um die meisten wichtigen Debian-basierten Systeme, einschließlich Ubuntu, aus dem Netzwerk zu installieren. Dies ist natürlich nur eine Erweiterung der Marionettenantwort, die eine Erweiterung der Debconf-Antwort ist.

Die Kombination aus Staging von FAI und anschließendem Anpassen von Puppets an Serverrollen (wobei Puppets die richtigen Tools für Ihr System verwenden, z. B. Debconf für Debian (-likes), eher automatisch) ist heutzutage recht beliebt und sollte es auch nicht sein Es ist schwierig, Beispiele zu finden, die genau Ihren Vorstellungen entsprechen.

Ein wichtiger zusätzlicher Vorteil einer Staging / Konfigurationsserver zu haben , ist , dass es auch eine logische Ort , um Ihre Konfiguration Versionskontrolle zu halten, zB mit git (die den Vorteil der Namensgebung Repository Staaten von Prüfziffer, so dass Sie sicher gegen Korruption solange Sie die richtigen Prüfsummen notieren), für einen wirklich sauberen und reproduzierbaren Prozess.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.