Unattended use of mysql_secure_installation

After installing MySQL on any Linux distribution you run the mysql_secure_installation script, or at least you should! It will prompt you to set a new root password, remove anon access and a few other things. But if you want this configuration to be done in a deployment or cloud-init script? The mysql_secure_installation command/script doesn’t accept any parameters, so it can’t be used for unattended install. How ever you can execute the same commands via the mysql command line tool as long as the service is started.

[shell]
mysql -e "UPDATE mysql.user SET Password=PASSWORD(‘{input_password_here}’) WHERE User=’root’;"
mysql -e "DELETE FROM mysql.user WHERE User=’root’ AND Host NOT IN (‘localhost’, ‘127.0.0.1’, ‘::1’);"
mysql -e "DELETE FROM mysql.user WHERE User=”;"
mysql -e "DROP DATABASE test;"
mysql -e "FLUSH PRIVILEGES;"
[/shell]

I use this to provision new MySQL servers in the Amazon EC2 environment and it works like a charm. If this is used in a cloud-init script make sure to execute the sudo service mysqld start first!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: