Installing Percona/MySQL unattended on Ubuntu
Asked Answered
F

5

17

I can install MYSQL on Ubuntu without prompts with the code below:

dbpass="mydbpassword"
export DEBIAN_FRONTEND=noninteractive
echo mysql-server-5.1 mysql-server/root_password password $dbpass | debconf-set-selections
echo mysql-server-5.1 mysql-server/root_password_again password $dbpass | debconf-set-selections
apt-get -y install mysql-server

The part with the debconf-set-selections I got somewhere online (could be here can't remember) and it has worked ok for me thus far. I'm not that much of an expert to understand how it works but it does.

However, I want to do the same thing for Percona. I've setup the apt package manager to deal with using apt-get for percona. So now my code is the following:

dbpass="dbpass" && export dbpass
export DEBIAN_FRONTEND=noninteractive
echo percona-server-server-5.5 percona-server-server-5.5/root_password password $dbpass | debconf-set-selections
echo percona-server-server-5.5 percona-server-server-5.5/root_password_again password $dbpass | debconf-set-selections
apt-get -y install percona-server-server-5.5

However, Percona installs but without a password as defined. I know I'm missing something in the debconf bit.

I'd appreciate some guidance here.

Thanks in advance.

Frazer answered 16/3, 2012 at 20:6 Comment(1)
Related: Percona DB not starting: initscript mysql, action “start” failed.Repetition
G
6

I actually found that the answer here install mysql on ubuntu without password prompt that suggested

export DEBIAN_FRONTEND=noninteractive apt-get -q -y install mysql-server

Worked and left me with a root user with no password, which is what I wanted.

Gareri answered 8/8, 2013 at 0:35 Comment(0)
M
6

The second part of the debconf-prefix should not contain the version number:

echo percona-server-server-5.5 percona-server-server/root_password password $dbpass | sudo debconf-set-selections
echo percona-server-server-5.5 percona-server-server/root_password_again password $dbpass | sudo debconf-set-selections

For 5.6:

echo percona-server-server-5.6 percona-server-server/root_password password $dbpass | sudo debconf-set-selections
echo percona-server-server-5.6 percona-server-server/root_password_again password $dbpass | sudo debconf-set-selections
Merari answered 15/3, 2014 at 8:14 Comment(0)
S
6

If you understand what is going on underneath the hood it makes it easier to debug and figure out why this isn't working.

When you install a debian package often times you get questions about licenses, passwords, locations, etc. All of those values are stored in debconf. If you are wanting to do an unattended installation you can preload those answers into debconf so you aren't prompted for those questions, since they are already answered.

The challenge comes when understanding how to properly answer those questions. To do this you first need to install the debconf-utils

apt install debconf-utils

next you need to manually install your package.

In my case I am installing the percona-xtradb-cluster-57 package.

wget https://repo.percona.com/apt/percona-release_0.1-4.$(lsb_release -sc)_all.deb
sudo dpkg -i percona-release_0.1-4.$(lsb_release -sc)_all.deb
sudo apt-get update -y
sudo apt-get install -y percona-xtradb-cluster-57

After this has been installed you can get the selections that have been set by using the deb-get-selections tool.

debconf-get-selections | grep percona

In the response you will see the selections that were set. In this case

percona-xtradb-cluster-server-5.7   percona-xtradb-cluster-server-5.7/root-pass password
percona-xtradb-cluster-server-5.7   percona-xtradb-cluster-server-5.7/re-root-pass  password
percona-xtradb-cluster-server-5.7   percona-xtradb-cluster-server-5.7/remove-data-dir   boolean false
percona-xtradb-cluster-server-5.7   percona-xtradb-cluster-server-5.7/root-pass-mismatch    error
percona-xtradb-cluster-server-5.7   percona-xtradb-cluster-server-5.7/data-dir  note

You can now copy the values that you want to set. In my case I want automatically set the root password.

In your automated installation script you can now use the debconf-set-selections tool to automate setting the values for the root password question and the confirm root password question.

echo "percona-xtradb-cluster-server-5.7   percona-xtradb-cluster-server-5.7/root-pass password my_temp_password" | debconf-set-selections
echo "percona-xtradb-cluster-server-5.7   percona-xtradb-cluster-server-5.7/re-root-pass  password my_temp_password" | debconf-set-selections

Happy Automating!

Seldan answered 6/3, 2018 at 17:41 Comment(0)
W
3

Think I figured it out

echo "percona-server-server-5.5 mysql-server/root_password password mypassword" | debconf-set-selections
echo "percona-server-server-5.5 mysql-server/root_password_again password mypassword" | debconf-set-selections

Don't use export DEBIAN_FRONTEND=noninteractive. If the debconf entries are correct, then you won't be prompted anyway. If they are incorrect and you use noninteractive then the prompt will continue with a blank password.

Since Percona 'hooks into' MySQL check that it installed correctly using

service mysql status

and you will know it is percona if you see something like

mysql.service - LSB: Start and stop the mysql (Percona Server) daemon

Then finally check the password was set correctly

mysql -u user -pmypassword

EDIT: That said, for a newer version of percona, F21's answer worked for me. You can check the entries in /var/cache/debconf/passwords.dat

Wheatley answered 22/4, 2016 at 20:34 Comment(1)
Thanks. It's been a while I needed this, but I'll try this out and see.Frazer
D
0

you can always do normal installation and then script:

  • killing mysql server
  • starting it with skip-grant-tables
  • adjusting passwords
  • killing the temporarily started mysql without authentication
  • starting regular mysql
Dado answered 27/8, 2012 at 20:37 Comment(1)
I need 100% unattended installation. Does your approach fit the bill and do you have any code samples?Frazer

© 2022 - 2024 — McMap. All rights reserved.