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.