Installa MySQL su Ubuntu senza una richiesta di password


305

Come faccio a scrivere uno script per installare il server MySQL su Ubuntu?

sudo apt-get install mysql verrà installato, ma richiederà anche l'inserimento di una password nella console.

Come posso farlo in modo non interattivo? Cioè, scrivere uno script in grado di fornire la password?

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

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

Risposte:


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

Per versioni specifiche, ad esempio mysql-server-5.6, è necessario specificare la versione in questo modo:

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

Per mysql-community-server, le chiavi sono leggermente diverse:

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

Sostituisci la tua password con la password di root desiderata. (sembra che la tua password possa anche essere lasciata vuota per una password di root vuota.)

Se la tua shell non supporta le stringhe here ( zsh , ksh93 e bash le supportano), usa:

echo ... | sudo debconf-set-selections 

1
Assicurati di cambiare la mysql-server-5.1parte alla versione corrente di mysql!
Decano piuttosto

19
Questa risposta si traduce in MariaDB come segue sostituendo mysql-server-<version>con maria-db-<server>. La seguente occorrenza di mysql-server/ rimane intatta
Lukx

5
- La parte <versione> non è necessaria - funziona come un incantesimo per me ed è più generica senza di essa.
msztolcman,

2
Funziona bene con aftersudo apt-get install debconf-utils
Nazin,

4
@Lukx per MariaDB, il pacchetto è mariadb-server, non maria-db-server. Grazie comunque per la nota.
ywarnier,

238

Questo dovrebbe fare il trucco

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

Certo, ti lascia con una password di root vuota - quindi ti consigliamo di eseguire qualcosa di simile

mysqladmin -u root password mysecretpasswordgoeshere

Successivamente per aggiungere una password all'account.


3
Testato e funzionante nella nuova istanza di Ubuntu 12.04 con MySQL 5.5
Alberto Megía,

21
Se stai installando con sudo, usa -E in modo che la variabile d'ambiente sia passata. Per esempio. sudo -E apt-get -q -y installa mysql-server.
Patrick Cullen,

35
Puoi anche aggiungere la variabile env direttamente al comando (senza inquinare l'ambiente esterno) anteponendolo -DEBIAN_FRONTEND=noninteractive apt-get -y install mysql-server
yoniLavi

2
La password mysql verrà archiviata in un registro bash quando eseguita in questo modo.
DutGRIFF,

3
Ha funzionato per me su Debian 8.2 - Ho combinato da @PatrickCullen e @yoniLavi per ottenere - DEBIAN_FRONTEND=noninteractive sudo -E apt-get -q -y install mysql-serverlavorato come un fascino!
MuffinTheMan

31

Un altro modo per farlo funzionare:

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

Si noti che questo imposta semplicemente la password su "root". Non sono riuscito a farlo per impostare una password vuota usando semplici virgolette '', ma questa soluzione è stata sufficiente per me.

Basato su una soluzione qui .


1
echo 'mysql-server-5.5 mysql-server / root_password password' | sudo debconf-set-selections funziona per specificare una password vuota per me.
Tsuneo Yoshioka,

4
@TsuneoYoshioka Non funziona per me. Se inserisco due spazi alla fine, imposta la mia password su un unico spazio. Con uno spazio cerca ancora di dare il prompt e quindi rovina l'installazione.
aprono il

3

Uso:

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'"

Grazie! la definizione di variabili al di fuori di sudo mi fa sempre piacere.
Gaston Sanchez,
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.