Como instalo o MySQL sem um prompt de senha?

26

Estou tentando instalar o MySQL no Ubuntu Natty sem o prompt de senha. No entanto, continuo solicitando uma senha em algum momento após a instalação principal.

Além disso, quando digito o que acredito ser minha senha (mymysqlpass), ele recebe um aviso de acesso negado. Então, quando o script terminar, eu posso entrar no mysql sem uma senha, ou seja, mysql -uroot, o que não deve acontecer.

#!/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
fonte
Eu seria muito perigoso! o que você precisa disso?
Pascal Fares
6
Quando você está provisionando máquinas virtuais, por um lado. Se você estiver realmente preocupado, tenho certeza de que você poderia fazer algo como criar uma senha criptograficamente segura aleatória e fazer com que o script crie um trabalho cron para informar a senha em um momento em que há pouco tráfego e o sistema é bloqueado por via aérea. Tempo. Apenas verifique se você está olhando para o computador durante os 5 segundos antes de desaparecer.
trysis
O OP diz "Eu sempre recebo uma senha", mas em seu código de exemplo, temos as 2 linhas debconf-set-selectionsque começarão a evitar isso, com voto negativo porque acredito que a pergunta e o código de amostra foram editados em dois momentos diferentes e agora o pergunta não faz mais sentido.
Mastazi 5/05

Respostas:

46

Os seguintes comandos definem a senha raiz do MySQL para strangehatquando você instala o mysql-serverpacote.

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

Observe que isso cria uma cópia em texto não criptografado da sua senha /var/cache/debconf/passwords.dat(que normalmente é legível somente pelo root e a senha será excluída pelo sistema de gerenciamento de pacotes após a instalação bem-sucedida do mysql-serverpacote).

Certifique-se de usar aspas se estiver usando no Dockerfile.

Agora você pode instalar mysql-servere o prompt de senha não aparece:

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

isso instalará o mysql sem nenhuma intervenção

lilbro1062000
fonte
7

Isso pode funcionar para que não seja solicitado:

export DEBIAN_FRONTEND=noninteractive

Quanto ao script, eu tentaria colocar a senha entre aspas:

mysql_pass="mymysqlpass"
Gustav Bertram
fonte
1

Esta parte precisa ser reformulada se você quiser colocar a senha entre aspas: 'mysql-server-5.1 mysql-server / root_password password' $ mysql_pass ''

Para:

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

Isso funcionou para mim (senha raiz vazia):

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
fonte