¿Cómo instalo MySQL sin una solicitud de contraseña?

26

Estoy tratando de instalar MySQL en Ubuntu Natty sin la solicitud de contraseña. Sin embargo, me siguen pidiendo una contraseña en algún momento después de la instalación principal.

Además, cuando ingreso lo que creo que debería ser mi contraseña (mymysqlpass), me da un aviso de acceso denegado. Luego, cuando finaliza el script, puedo iniciar sesión en mysql sin una contraseña, es decir, mysql -uroot, lo que no debería suceder.

#!/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
fuente
¡Sería muy peligroso! ¿para qué necesitas esto?
Pascal Fares
66
Cuando aprovisiona máquinas virtuales, por un lado. Si está realmente preocupado, estoy seguro de que podría hacer algo como crear una contraseña aleatoria criptográficamente segura y hacer que el script cree un trabajo cron para decirle la contraseña en un momento en que hay poco tráfico y el sistema se queda sin aire en ese momento hora. Solo asegúrese de mirar la computadora durante los 5 segundos que le da antes de que desaparezca.
trysis
El OP dice "Me siguen pidiendo una contraseña" pero en su código de ejemplo tenemos las 2 líneas que comienzan con debconf-set-selectionslo que evitaré, rechazado porque creo que la pregunta y el código de muestra fueron editados en dos puntos diferentes en el tiempo y ahora el la pregunta ya no tiene sentido.
mastazi

Respuestas:

46

Los siguientes comandos configuran la contraseña de root de MySQL strangehatcuando instala el mysql-serverpaquete.

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

Tenga en cuenta que esto crea una copia de texto sin cifrar de su contraseña /var/cache/debconf/passwords.dat(que normalmente solo puede leer el usuario root y el sistema de administración de paquetes eliminará la contraseña después de la instalación exitosa del mysql-serverpaquete).

Asegúrese de usar comillas si lo usa en Dockerfile.

Ahora puede instalar mysql-servery el mensaje de contraseña no aparece:

sudo apt-get install mysql-server
Nimmermehr
fuente
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

esto instalará mysql sin ninguna intervención

lilbro1062000
fuente
7

Esto podría funcionar para que no le solicite:

export DEBIAN_FRONTEND=noninteractive

En cuanto al guión, trataría de poner la contraseña entre comillas:

mysql_pass="mymysqlpass"
Gustav Bertram
fuente
1

Esta parte necesita una reformulación si desea poner la contraseña entre comillas: 'mysql-server-5.1 mysql-server / root_password contraseña' $ mysql_pass ''

A:

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

Esto funcionó para mí (contraseña de root vacía):

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
fuente