Comment écrire un script pour installer le serveur MySQL sur Ubuntu?
Sudo apt-get install mysql
sera installé, mais il demandera également la saisie d'un mot de passe dans la console.
Comment est-ce que je fais ceci d'une manière non interactive? Autrement dit, écrivez 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
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 devez spécifier la version de la manière suivante:
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 your_password 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 vierge.)
Si votre shell ne supporte pas here-strings (zsh, ksh9 et bash les supporte), utilisez:
echo ... | Sudo debconf-set-selections
Cela devrait faire l'affaire
export DEBIAN_FRONTEND=noninteractive
Sudo -E apt-get -q -y install mysql-server
Bien sûr, cela vous laisse avec un mot de passe root vierge - vous voudrez donc exécuter quelque chose comme:
mysqladmin -u root password mysecretpasswordgoeshere
Ensuite, ajoutez un mot de passe au compte.
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 ceci définit simplement le mot de passe sur "root". Je ne pouvais pas obtenir de mot de passe vide avec des guillemets simples ''
, mais cette solution me suffisait.
Basé sur une solution ici .
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'"