Comment installer MySQL sans invite de mot de passe?

26

J'essaie d'installer MySQL sur Ubuntu Natty sans l'invite de mot de passe. Cependant, je reçois toujours un mot de passe à un moment donné après l'installation principale.

De plus, lorsque j'entre ce que je crois être mon mot de passe (mymysqlpass), cela me donne un avis d'accès refusé. Ensuite, lorsque le script se termine, je peux me connecter à mysql sans mot de passe, c'est-à-dire mysql -uroot, ce qui ne devrait pas se produire.

#!/bin/bash
#This script installs mysql (latest build)
#Install MYSQL Server
mysql_pass=mymysqlpass
export DEBIAN_FRONTEND=noninteractive 
debconf-set-selections <<< 'mysql-server-5.1 mysql-server/root_password password '$mysql_pass''
debconf-set-selections <<< 'mysql-server-5.1 mysql-server/root_password_again password '$mysql_pass''
apt-get -y install mysql-server
#Configure Password and Settings for Remote Access
cp /etc/mysql/my.cnf /etc/mysql/my.bak.cnf
ip=`ifconfig eth0 | grep "inet addr"| cut -d ":" -f2 | cut -d " " -f1` ; sed -i "s/\(bind-address[\t ]*\)=.*/\1= $ip/" /etc/mysql/my.cnf
mysql -uroot -e "UPDATE mysql.user SET Password=PASSWORD('"$mysql_pass"') WHERE User='root'; FLUSH PRIVILEGES;"
sleep 10
mysql -uroot -p$mysql_pass -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '"$mysql_pass"'; FLUSH PRIVILEGES;"
#Restart
service mysql restart
echo "MySQL Installation and Configuration is Complete."
Chuck Ugwuh
la source
Je serais très dangereux! pourquoi avez-vous besoin de cela?
Pascal Fares
6
Lorsque vous approvisionnez des machines virtuelles, pour une chose. Si vous êtes vraiment inquiet, je suis sûr que vous pourriez faire quelque chose comme créer un mot de passe cryptographiquement sécurisé aléatoire et demander au script de créer un travail cron pour vous dire le mot de passe à un moment où il y a peu de trafic et avoir le système airgapped à ce temps. Assurez-vous simplement que vous regardez l'ordinateur pendant les 5 secondes que vous lui donnez avant qu'il ne disparaisse.
trysis
L'OP dit "Je continue à être invité à entrer un mot de passe" mais dans son exemple de code, nous avons les 2 lignes commençant par debconf-set-selectionsqui éviteront cela, rétrogradées parce que je crois que la question et l'exemple de code ont été modifiés à deux moments différents et maintenant le question n'a plus de sens.
mastazi

Réponses:

46

Les commandes suivantes définissent le mot de passe racine MySQL strangehatlorsque vous installez le mysql-serverpackage.

echo "mysql-server mysql-server/root_password password strangehat" | sudo debconf-set-selections
echo "mysql-server mysql-server/root_password_again password strangehat" | sudo debconf-set-selections

Notez que cela crée une copie en texte clair de votre mot de passe dans /var/cache/debconf/passwords.dat(qui n'est normalement lisible que par root et le mot de passe sera supprimé par le système de gestion de package après l'installation réussie du mysql-serverpackage).

Assurez-vous d'utiliser des guillemets si vous l'utilisez dans Dockerfile.

Vous pouvez maintenant installer mysql-serveret l'invite de mot de passe n'apparaît pas:

sudo apt-get install mysql-server
Nimmermehr
la source
11
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password my_password'
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password my_password'
sudo apt-get -y install mysql-server

cela installera mysql sans aucune intervention

lilbro1062000
la source
7

Cela pourrait fonctionner pour qu'il ne vous invite pas:

export DEBIAN_FRONTEND=noninteractive

Quant au script, j'essaierais de mettre le mot de passe entre guillemets:

mysql_pass="mymysqlpass"
Gustav Bertram
la source
1

Cette partie a besoin d'une reformulation si vous voulez mettre le mot de passe entre guillemets: 'mysql-server-5.1 mysql-server / root_password password' $ mysql_pass ''

À:

"mysql-server-5.1 mysql-server/root_password password '$mysql_pass'"

Cela a fonctionné pour moi (mot de passe root vide):

sudo debconf-set-selections <<< "mysql-server-5.5 mysql-server/root_password password ''"
sudo debconf-set-selections <<< "mysql-server-5.5 mysql-server/root_password_again password ''"
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password password ''"
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password_again password ''"
export DEBIAN_FRONTEND=noninteractive
sudo -E apt-get install -y -q mysql-server libmysqlclient-dev
user219207
la source