如何在没有密码提示的情况下安装MySQL?

我正在尝试在没有密码提示的情况下在Ubuntu Natty上安装MySQL。 但是,在主安装后的某个阶段,我不断收到密码提示。

此外,当我输入我认为应该是我的密码(mymysqlpass)时,它会给我一个拒绝访问通知。 然后当脚本终止时,我可以在没有密码的情况下登录mysql,即mysql -uroot,这不应该发生。

#!/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." 

安装mysql-server软件包时,以下命令将MySQL root密码设置为strangehat

 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 

请注意,这会在/var/cache/debconf/passwords.dat创建密码的明文副本(通常只能由root读取,并且在成功安装mysql-server软件包后,软件包管理系统将删除密码)。

如果在Dockerfile中使用它,请确保使用引号。

现在您可以安装mysql-server并且不会出现密码提示:

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

这将安装mysql而无需任何干预

这可能会使它无法提示您:

 export DEBIAN_FRONTEND=noninteractive 

至于脚本,我会尝试将密码放在引号中:

 mysql_pass="mymysqlpass" 

如果你想把密码放在引号之间,这部分需要改写: ‘mysql-server-5.1 mysql-server / root_password password’$ mysql_pass”

至:

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

这对我有用(空root密码):

 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