I am writing a simple bash script to install MySQL on Ubuntu.
#!/bin/bash
apt-get update
# Install MySQL5
aptitude -y install mysql-server mysql-client libmysqlclient15-dev
However MySQL prompts for a password and confirmation. How do I pass along a root password. Is there an echo I can use?
look into using expect
It can be used to automate most interactive sessions, although I wouldn't use a root password
This script was successful when launched as superuser:
This is so much easier ..
install mysql on ubuntu without password prompt
If your shell doesn't support
here-strings
(zsh, ksh93 and bash support them), use:Expect is probably overkill. Look on one of the Debian or Ubuntu admin forums -- things like FAI et al have long used preseeding for debconf questions. You should be able to use that here too.
Lastly, you could probably also use apt-get itself or other frontends.
This is an excerpt from my setup script for new servers. You should be able to copy it word-for-word except for the password.
You'll need to run this using sudo if you're not already root.
Other answers have used the -y which makes apt-get always answer yes to questions. The -q hides some progress indicators so you can send the output to a log. You could also use -qq, which automatically gives you a -y. This is in the man page for apt-get.
The
<<EOSQL
is a bash heredoc syntax for readability.I got the heredoc part of this solution from this guy: http://padwasabimasala.posterous.com/non-interactive-scripted-mysql-install-on-ubu
The thing to remember with the heredoc is that whitespace before the closing string breaks it. So don't indent that line. Here is a page about the heredoc syntax: http://tldp.org/LDP/abs/html/here-docs.html
The easiest way to do this is to use the DEBIAN_FRONTEND environment variable and the aptitude -q and -y flags:
Or more generically, assuming sudo password has been catered for some-how: