Installer MySQL sur Ubuntu sans invite de mot de passe


305

Comment écrire un script pour installer le serveur MySQL sur Ubuntu?

sudo apt-get install mysql va s'installer, mais il vous demandera également de saisir un mot de passe dans la console.

Comment dois-je procéder de manière non interactive? Autrement dit, écrire un script qui peut fournir le mot de passe?

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

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

Réponses:


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

Pour des versions spécifiques, telles que mysql-server-5.6, vous devrez spécifier la version comme ceci:

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

Pour mysql-community-server, les clés sont légèrement différentes:

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

Remplacez votre_mot de passe par le mot de passe root souhaité. (il semble que votre_mot de passe puisse également être laissé vide pour un mot de passe root vide.)

Si votre shell ne prend pas en charge les chaînes ici ( zsh , ksh93 et bash les prennent en charge), utilisez:

echo ... | sudo debconf-set-selections 

1
Assurez-vous de changer la mysql-server-5.1partie à la version actuelle de mysql!
Dean Rather

19
Cette réponse se traduit par MariaDB comme suit en remplaçant mysql-server-<version>par maria-db-<server>. L'occurrence suivante de mysql-server/ restes intacts
Lukx

5
- La partie <version> est inutile - fonctionne comme un charme pour moi, et est plus générique sans cela.
msztolcman

2
Cela fonctionne bien avec aprèssudo apt-get install debconf-utils
Nazin

4
@Lukx pour MariaDB, le paquet est mariadb-server, pas maria-db-server. Merci pour la note quand même.
ywarnier

238

Cela devrait faire l'affaire

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

Bien sûr, il vous laisse un mot de passe root vierge - vous voudrez donc exécuter quelque chose comme

mysqladmin -u root password mysecretpasswordgoeshere

Ensuite pour ajouter un mot de passe au compte.


3
Testé et fonctionnant dans la nouvelle instance Ubuntu 12.04 avec MySQL 5.5
Alberto Megía

21
Si vous installez avec sudo, utilisez -E pour que la variable d'environnement soit transmise. Par exemple. sudo -E apt-get -q -y installe mysql-server.
Patrick Cullen

35
Vous pouvez également ajouter la variable env directement dans la commande (sans polluer l'environnement externe) en la ajoutant au préalable -DEBIAN_FRONTEND=noninteractive apt-get -y install mysql-server
yoniLavi

2
Le mot de passe mysql sera stocké dans un journal bash une fois fait de cette façon.
DutGRIFF

3
A travaillé pour moi sur Debian 8.2 - J'ai combiné @PatrickCullen et @yoniLavi pour me faire DEBIAN_FRONTEND=noninteractive sudo -E apt-get -q -y install mysql-servertravailler comme un charme!
MuffinTheMan

31

Une autre façon de le faire fonctionner:

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

Notez que cela définit simplement le mot de passe sur "root". Je n'ai pas réussi à obtenir un mot de passe vide à l'aide de simples guillemets '', mais cette solution était suffisante pour moi.

Basé sur une solution ici .


1
echo 'mysql-server-5.5 mysql-server / root_password password' | sudo debconf-set-selections fonctionne pour spécifier un mot de passe vide pour moi.
Tsuneo Yoshioka

4
@TsuneoYoshioka Ne fonctionne pas pour moi. Si je mets deux espaces à la fin, cela définit mon mot de passe sur un seul espace. Avec un espace, il essaie toujours de donner l'invite, puis fout en l'air l'installation.
mpen

3

Utilisation:

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

Merci! définir des variables en dehors de sudo m'a toujours.
Gaston Sanchez
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.