首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将密码从bash脚本传递到aptitude以安装mysql?

如何将密码从bash脚本传递到aptitude以安装mysql?
EN

Stack Overflow用户
提问于 2009-07-29 18:59:03
回答 7查看 15.2K关注 0票数 22

我正在编写一个简单的bash脚本来在Ubuntu上安装MySQL。

代码语言:javascript
复制
#!/bin/bash
apt-get update

# Install MySQL5 
aptitude -y install mysql-server mysql-client libmysqlclient15-dev

但是,MySQL会提示输入密码并进行确认。如何传递root密码。有没有我可以用的回声?

EN

回答 7

Stack Overflow用户

发布于 2012-01-17 06:04:58

这就容易多了..

install mysql on ubuntu without password prompt

代码语言:javascript
复制
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

如果您外壳程序不支持here-strings (zsh、ksh93和bash支持它们),可以使用:

代码语言:javascript
复制
echo ... | sudo debconf-set-selections 
票数 14
EN

Stack Overflow用户

发布于 2009-07-29 22:59:22

感谢您对expect的建议。我通过搜索Ubuntu管理论坛找不到任何东西,所以我选择了expect。正如你可以从这篇文章的时间戳中看到的,我花了3个小时才让它工作。下面是代码,希望能对大家有所帮助:

代码语言:javascript
复制
#!/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
票数 12
EN

Stack Overflow用户

发布于 2010-08-27 01:16:29

这是我的新服务器设置脚本的摘录。您应该能够逐字复制它,除了密码。

如果您还不是root用户,则需要使用sudo运行此命令。

代码语言:javascript
复制
#!/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."

其他答案使用了-y,这使得apt-get总是对问题回答是。-q隐藏了一些进度指示器,以便您可以将输出发送到日志。您也可以使用-qq,它会自动为您提供一个-y。这在apt-get的手册页中。

<<EOSQL是一种bash heredoc语法,用于提高可读性。

我从这个人那里得到了这个解决方案的heredoc部分:http://padwasabimasala.posterous.com/non-interactive-scripted-mysql-install-on-ubu

关于heredoc,需要记住的是在结束字符串断开它之前的空格。所以不要缩进这一行。这是一个关于Here the语法的页面:http://tldp.org/LDP/abs/html/here-docs.html

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1202347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档