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 sendo solicitado por uma senha em algum momento após a instalação principal.

Além disso, quando eu digito o que eu acredito que deve ser minha senha (mymysqlpass), isso me dá um aviso de acesso negado. Então, quando o script terminar, eu posso logar no mysql sem uma senha, ou seja, mysql -uroot, o que não deveria 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 ]*\)=.*/= $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."
    
por Chuck Ugwuh 14.11.2011 / 18:53

4 respostas

46

Os seguintes comandos definem a senha da raiz do MySQL como strangehat quando você instala o pacote mysql-server .

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 puro da sua senha em /var/cache/debconf/passwords.dat (que normalmente é legível apenas pelo root e a senha será excluída pelo sistema de gerenciamento de pacotes após a instalação bem-sucedida do pacote mysql-server ).

Certifique-se de usar aspas se usá-lo no Dockerfile.

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

sudo apt-get install mysql-server
    
por Nimmermehr 16.11.2011 / 16:41
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

isto irá instalar o mysql sem qualquer intervenção

    
por lilbro1062000 17.12.2013 / 15:02
7

Isso pode funcionar para não solicitar:

export DEBIAN_FRONTEND=noninteractive

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

mysql_pass="mymysqlpass"
    
por Gustav Bertram 14.11.2011 / 19:06
1

Esta parte precisa de uma nova frase se você quiser colocar a senha entre aspas: 'mysql-server-5.1 senha mysql-server / root_password' $ mysql_pass ''

Para:

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

Isso funcionou para mim (senha de root 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
    
por user219207 19.10.2016 / 08:01