Installer mysql-server dans un script shell bootstrap vagrant (comment ignorer la configuration?)

16

J'ai essayé d'installer mysql-server sur ma machine virtuelle Vagrant Ubuntu 12.04 LTS. Lorsque je l'ai fait, la configuration démarre automatiquement. Je peux voir cela dans la sortie Vagrant:

Bien qu'il ne soit pas obligatoire, il est fortement recommandé de définir un mot de passe ││ pour l'utilisateur "root" administratif de MySQL. Si ce champ est laissé vide, le mot de passe ne sera pas modifié. Nouveau mot de passe pour le Utilisateur "root" MySQL

Après cela, le texte de sortie est détraqué - ± ├⎺ ⎼␊⎻┌▒␌␊ ┌␋␉⎽─┌␋├␊3-0 3.7.9-2┤␉┤┼├┤1 (┤⎽␋┼± ...- mais est plutôt long et plein de couleurs vertes et rouges, donc je pense que le reste de l'installation est en cours.

Mais je peux confirmer le manque d'installation après:

sudo apt-get install --just-print mysql-server-5.5 
...
The following NEW packages will be installed:
  mysql-server-5.5

Comment envoyer les bons signaux via un script shell pour configurer le serveur MYSQL? Ou si je ne peux pas, comment puis-je arrêter le lancement automatique de la configuration ou tuer l'installation une fois lancée tout en ayant le package installé?

Sam
la source
Si le reste de l'installation se termine , il ne vous permettra pas de réinstaller. Avez-vous essayé de configurer un mot de passe avant l'installation?
Anthon
@Anthon Désolé, je ne pense pas avoir bien expliqué cela dans mon article: je peux configurer manuellement tout cela, mais mon objectif est d'automatiser autant que possible ma configuration. Et j'ai de nombreuses étapes après cela qui dépendent de l'installation de mysql (installation de rvm par exemple).
Sam
À moins que les problèmes ne soient causés par un système impur (essayez d'installer dans une configuration de machine virtuelle propre), cela ressemble à un problème avec le package lui-même. Dans de tels cas, j'ai parfois corrigé le fichier d'installation (pas une reconstruction complète, il suffit d'extraire / modifier / assembler) et de le servir à partir d'un référentiel local.
Anthon
@Anthon: / J'espérais trouver une solution comme soit a) Un package de serveur MYSQL existe qui ne lance pas automatiquement l'assistant de configuration, soit b) il y avait un moyen bash-y d'intercepter ces types de lancements ( apt-get install mysql-server | some_trap_cmd >> some.file). On dirait que ça n'existe peut-être pas?
Sam
Le problème est qu'apt-get exécute des scripts dans le fichier d'installation, vous n'allez pas y attraper de piège à moins que vous ne corrigiez les scripts. Vous pouvez également jeter un œil au mysql 5.6 et l'installer à partir du tableau de bord , mais cela pourrait créer plus de difficultés à récupérer toutes les dépendances, mais peut-être que les problèmes d'installation ont disparu.
Anthon

Réponses:

29

Vous pouvez définir le mot de passe racine MySQL dans votre fichier d'amorçage en ajoutant des commandes debconf-set-selections avant d'exécuter votre installation apt-get:

#!/usr/bin/env bash

debconf-set-selections <<< 'mysql-server mysql-server/root_password password MySuperPassword'
debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password MySuperPassword'
apt-get update
apt-get install -y mysql-server

Je suppose que cela fonctionne sur n'importe quel système basé sur Debian. Je l'utilise tous les jours, la box est construite de manière entièrement automatique.

CCoffee
la source
1
Impressionnant! Je ne connaissais pas cette commande
AlvaroAV
1
Je n'existais pas debconf-set-selections. Cela a parfaitement fonctionné. Je vous remercie!
Sam
3

Vous voudrez peut-être examiner Puppet - il est excellent pour installer et configurer automatiquement les logiciels. Il y a aussi un module MySQL , mais je ne l'ai pas essayé.

l0b0
la source