我写一个简单的bash脚本在Ubuntu上安装MySQL。
#!/bin/bash
apt-get update
# Install MySQL5
aptitude -y install mysql-server mysql-client libmysqlclient15-dev
但是MySQL的提示输入密码和确认。 如何沿着root密码通过。 有没有回音,我可以使用?
我写一个简单的bash脚本在Ubuntu上安装MySQL。
#!/bin/bash
apt-get update
# Install MySQL5
aptitude -y install mysql-server mysql-client libmysqlclient15-dev
但是MySQL的提示输入密码和确认。 如何沿着root密码通过。 有没有回音,我可以使用?
这是容易得多..
在Ubuntu上安装mysql没有密码提示
sudo debconf-set-selections <<< 'mysql-server-5.1 mysql-server/root_password password your_password'
sudo debconf-set-selections <<< 'mysql-server-5.1 mysql-server/root_password_again password your_password'
sudo apt-get -y install mysql-server
如果你的shell不支持here-strings
(zsh的,ksh93的和bash支持他们),使用:
echo ... | sudo debconf-set-selections
感谢您对期待小费。 所以我希望去我无法通过搜索Ubuntu的管理论坛上找到任何东西。 你可以通过这个帖子的时间戳看,我花了3个小时搞不定。 下面是代码,我希望它可以帮助别人:
#!/bin/bash
apt-get update
apt-get install expect
VAR=$(expect -c '
spawn apt-get -y install mysql-server
expect "New password for the MySQL \"root\" user:"
send "PasswordHere\r"
expect "Repeat password for the MySQL \"root\" user:"
send "PasswordHere\r"
expect eof
')
echo "$VAR"
apt-get -y install mysql-client libmysqlclient15-dev
#For some reason important to restart - otherwise possible errors
/etc/init.d/mysql stop
/etc/init.d/mysql start
这是新的服务器我的安装脚本的摘录。 你应该能够字对字复制它除了密码。
你需要运行这个使用sudo,如果你不是已经根。
#!/bin/bash
export DEBIAN_FRONTEND=noninteractive
apt-get -q -y install mysql-server
echo "Give mysql server time to start up before we try to set a password..."
sleep 5
mysql -uroot -e <<EOSQL "UPDATE mysql.user SET Password=PASSWORD('yourpasswordhere') WHERE User='root'; FLUSH PRIVILEGES;"
EOSQL
echo "Done setting mysql password."
其他答案已经使用,这使得易于得到总是回答yes问题-y。 该-q隐藏了一些进展指标,以便您可以将输出发送到日志。 你也可以使用-qq,它会自动给你一个-y。 这是在apt-get的手册页。
在<<EOSQL
是可读性bash的定界符。
我得到了这个家伙该解决方案的一部分定界符: http://padwasabimasala.posterous.com/non-interactive-scripted-mysql-install-on-ubu
与定界符要记住的一点是,空白收盘串打破它。 所以,不要缩进该行。 这是一个关于定界符页: http://tldp.org/LDP/abs/html/here-docs.html
要做到这一点最简单的方法是使用DEBIAN_FRONTEND环境变量和资质-q和-y标志:
sudo DEBIAN_FRONTEND=noninteractive aptitude install -q -y mysql-server
或者更一般地,假设输入sudo密码已经照顾到一些知识:
#!/bin/bash
INSTALLER_LOG=/var/log/my-installer.log
installnoninteractive(){
sudo bash -c "DEBIAN_FRONTEND=noninteractive aptitude install -q -y $* >> $INSTALLER_LOG"
}
installnoninteractive mysql-server
考虑使用期望
它可用于自动化大部分的互动环节,虽然我不会用root密码
当作为超级用户推出的这个脚本是成功的:
#!/bin/bash
export temp_mysql_password="**********"
export DEBIAN_FRONTEND=noninteractive
debconf-set-selections <<< "mysql-server mysql-server/root_password password $temp_mysql_password"
debconf-set-selections <<< "mysql-server mysql-server/root_password_again password $temp_mysql_password"
debconf-set-selections <<< "mysql-server-5.6 mysql-server/root_password password $temp_mysql_password"
debconf-set-selections <<< "mysql-server-5.6 mysql-server/root_password_again password $temp_mysql_password"
apt-get update
apt-get -y upgrade
apt-get -y install mysql-server
预计可能是矫枉过正。 看看在Debian或Ubuntu管理员论坛之一 - 比如FAI等人长期使用预置的debconf的问题。 你应该能够太在这里使用。
最后,你很可能也使用apt-get本身或其他前端。