Installazione tramite script di MySQL su Ubuntu


23

Devo scrivere uno script che costruirà il mio server da una nuova installazione del server Ubuntu. Tra le cose come Apache e PHP è necessario installare MySQL. L'unico problema qui è che quando installo MySQL con apt-get, ad un certo punto l'installazione mostrerà una finestra di dialogo che mi permette di digitare la mia password di root. Cioè, è necessaria l'interazione umana.

Come posso bypassare questa schermata durante l'installazione ed evitare l'interazione umana mentre uso ancora apt-get per installare MySQL?


Risposte:


31

È necessario preimpostare il database debconf. debconf deve essere installato prima di provare questo.

La versione di mysql e ubuntu potrebbe cambiare la linea:

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

Ad esempio, hai reso necessario questo invece:

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

Sì, funziona, ma dopo l'installazione non riesco ad accedere a mysql (mysql -u root, mostra l'autorizzazione negata).
Samnang,

3
Che ne dicimysql -u root -p
PhilT

È inoltre necessario il flag "visto" come mostrato di seguito per disabilitare la visualizzazione della richiesta di password o ti verrà richiesta nuovamente la password.
Jamieson Becker,

5

Mentre FAI e sistemi simili sono utili in un ambiente aziendale (e dovrebbe conoscerli), purtroppo non sono una panacea.

Ad esempio, cosa succede se sta lavorando su macchine remote, forse hosted, server noleggiati, server associati senza una rete affidabile o dedicata o un ambiente cloud come EC2? Nessun tipo di netboot PXE funzionerà lì. Puppet e Chef sembrano essere strumenti più generici che potrebbero aiutarlo, tuttavia.

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

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

È possibile ottenere i valori corretti dal DB debconf su un sistema che è già stato impostato. Questa tecnica ti consente di inserire tutto in un unico script di shell. Ad esempio, da /var/cache/debconf/passwords.dat (nota la possibilità di lavorare sia con 5.0 su Debian che con 5.1 e Ubuntu, le voci extra non danneggiano nulla):

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

Un altro metodo, forse più semplice: (raccogliere le risposte da debconf-get-selections o debconf-show dal pacchetto 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

Dopo aver eseguito debconf-set-selections, controlla le risposte: cat /var/cache/debconf/passwords.dat

E, durante il test, assicurati di rimuovere ed eliminare tutti i database (in particolare il database mysql, dove questo è memorizzato) e correggere il tuo DB di configurazione nel caso in cui fossero danneggiati:

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

Alcuni consigli con questo: 1) DEVI avere il flag visto e la password _again. 2) NON DEVI inserire virgolette attorno alla password. Andrà in una query MySQL non quotata, quindi è necessario citarla da soli, se necessario. Ciò significa anche che non ci sono spazi (credo) 3) Se hai problemi, esegui la preconfigurazione a mano e quindi esegui l'installazione MySQL direttamente da te (in un normale terminale / tty) e vedi cosa ti dice debconf. Vi dirà avvertimenti ed errori lì.


3

Se hai più server che devi ricostruire, ti consiglio vivamente di guardare qualcosa come Puppet invece di scrivere uno script di shell. Puppet ha un linguaggio descrittivo, quindi definisci come vuoi che il sistema appaia, non come farlo lì. Il tipo di pacchetto ha un'opzione responsefile che consente di definire le risposte debconf nella risposta di Steven.


1

Posso anche suggerire di automatizzare il processo di gestione temporanea del server dal ferro grezzo?

FAIOggi il ha profili per installare dalla rete la maggior parte dei principali sistemi basati su Debian, incluso Ubuntu. Questo ovviamente è solo un'estensione della risposta fantoccio, che è un'estensione della risposta debconf.

La combinazione di messa in scena dal FAI, quindi personalizzazione con il pupazzo in ruoli del server (in cui il burattino utilizzerà gli strumenti adeguati per il proprio sistema, come debconf per Debian (-likes) piuttosto automaticamente), è piuttosto popolare in questi giorni e non dovrebbe essere troppo esempi difficili da trovare che corrispondono a ciò che si desidera fare piuttosto da vicino.

Un grande vantaggio aggiunto di avere un server di gestione temporanea / configurazione è che è anche un luogo logico per mantenere la configurazione controllata dalla versione, ad esempio con git (che ha il vantaggio di nominare gli stati del repository dal checksum, in modo da essere al sicuro dalla corruzione come fintanto che noti i checksum giusti), per un processo veramente pulito e riproducibile.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.