Frage Skriptbasierte Installation von MySQL unter Ubuntu


Ich muss ein Skript schreiben, das meinen Server aus einer neuen Ubuntu-Serverinstallation erstellt. Unter Dingen wie Apache und PHP muss MySQL installiert werden. Das einzige Problem hier ist, dass wenn ich MySQL mit apt-get installiere, irgendwann die Installation einen Dialog öffnet, der mir erlaubt, mein root-Passwort einzugeben. Das heißt, menschliche Interaktion ist erforderlich.

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


23
2018-06-04 02:28


Ursprung


Siehe auch stackoverflow.com/questions/1202347/... - Jamieson Becker


Antworten:


Sie müssen die Debconf-Datenbank vorbereiten. 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 hast du das 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

31
2018-06-04 03:48



Ja, es funktioniert, aber nach der Installation kann ich mich nicht bei mysql anmelden (mysql -u root, es wird die Berechtigung verweigert angezeigt). - Samnang
Wie wäre es mit mysql -u root -p - PhilT
Brauchen Sie auch "gesehen" -Flag wie unten angezeigt, um die Passwortabfrage zu deaktivieren oder Sie werden erneut zur Eingabe eines Passworts aufgefordert. - Jamieson Becker


Während FAI und ähnliche Systeme in einer Unternehmensumgebung hilfreich sind (und er sollte darüber Bescheid wissen), sind sie leider kein Allheilmittel.

Was passiert zum Beispiel, wenn er auf entfernten Rechnern, vielleicht gehosteten, angemieteten Servern, zusammengestellten Servern ohne ein vertrauenswürdiges oder dediziertes Netzwerk oder einer Cloud-Umgebung wie EC2 arbeitet? Keine Art von PXE Netboot wird dort funktionieren. Puppet und Chef scheinen eher Allzweckwerkzeuge zu sein, die ihm jedoch helfen könnten.

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

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

Sie können die korrekten Werte von der Debconf-DB auf einem bereits eingerichteten System abrufen. Mit dieser Technik können Sie das Ganze in einem einzigen Shell-Skript speichern. Zum Beispiel, von /var/cache/debconf/passwords.dat (beachten Sie die Fähigkeit, mit 5.0 auf Debian und 5.1 und Ubuntu zu arbeiten, schaden zusätzliche Einträge nichts):

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 Methode, vielleicht einfacher: (sammle 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

Und während des Testens sollten Sie sicherstellen, dass Sie alle Datenbanken (insbesondere die MySQL-Datenbank, wo diese gespeichert ist) entfernen und löschen und die Konfigurations-DB reparieren, falls sie beschädigt sein sollte:

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

Ein paar Tipps dazu: 1) Sie müssen die gesehene Flagge und das _again Passwort haben. 2) Sie dürfen das Passwort nicht in Anführungszeichen setzen. Es wird in eine MySQL-Abfrage ohne Anführungszeichen eingefügt, so dass Sie es bei Bedarf selbst zitieren müssen. Das bedeutet auch keine Leerzeichen (glaube ich) 3) Wenn Sie Probleme haben, tun Sie die Voreinstellung von Hand und führen Sie die MySQL-Installation direkt selbst (in einem normalen Terminal / tty) und sehen, was debconf Ihnen sagt. Es wird Ihnen dort Warnungen und Fehler mitteilen.


5
2017-07-30 15:17





Wenn Sie mehrere Server haben, die Sie neu erstellen müssen, empfehle ich Ihnen, etwas wie Marionette anstatt ein Shell-Skript zu schreiben. Puppet hat eine beschreibende Sprache. Sie definieren also, wie das System aussehen soll und nicht, wie Sie es dorthin bringen. Der Pakettyp verfügt über eine Antwortdateioption, mit der Sie die Debconf-Antworten in Steven's Antwort definieren können.


3
2018-06-04 07:06





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

FAI hat heutzutage Profile, um die meisten großen Debian-basierten Systeme, einschließlich Ubuntu, aus dem Netzwerk zu installieren. Dies ist natürlich nur eine Erweiterung der Puppet-Antwort, die eine Erweiterung der Debconf-Antwort darstellt.

Die Kombination von Staging von FAI, dann Anpassung mit Puppet in Server-Rollen (wo Marionette wird die richtigen Tools für Ihr System, wie debconf für Debian (-likes) eher automatisch), ist heutzutage sehr populär und es sollte nicht zu sein Es ist schwer, Beispiele zu finden, die ziemlich genau zu dem passen, was Sie tun möchten.

Ein großer zusätzlicher Vorteil eines Staging- / Konfigurationsservers ist, dass er auch ein logischer Ort ist, um Ihre Konfiguration versionsgesteuert zu halten, z. mit Git (Dies hat den Vorteil, Repository-Status per Prüfsumme zu benennen, so dass Sie sicher vor Korruption sind, solange Sie die richtigen Prüfsummen notieren) für einen wirklich sauberen und reproduzierbaren Prozess.


1
2018-06-04 10:11





Siehe auch:

https://stackoverflow.com/questions/1202347/simple-bash-script-to-install-mysql-need-some-help


1
2017-07-30 16:00



das wäre als Kommentar besser geeignet gewesen. Ich habe auf die Aufmerksamkeit des Moderators hingewiesen, und sie sollten in der Lage sein, es zu einem Kommentar zu machen. - Ben Pilbrow
Fixed, sorry & danke Ben! - Jamieson Becker