Shell script to create MySQL database and user

Simple bash script to quickly create a MySQL database and a user.

This can come pretty handy if you need to make a lot of databases, while doing a server migration, or something like that.

Usage instructions

The script takes three parameters:

  1. Database name
  2. Database username
  3. And a password

Name it something like mysql-db-create.sh, then make it executable:

$ sudo chmod 755 mysql-db-create.sh

And run it:

$ sudo ./mysql-db-create.sh my-database my-user c00lp45w0rd

Here’s the piece of bash code:

#!/bin/bash
 
green() {
  echo -e '\e[32m'$1'\e[m';
}
 
readonly EXPECTED_ARGS=3
readonly E_BADARGS=65
readonly MYSQL=`which mysql`
 
# Construct the MySQL query
readonly Q1="CREATE DATABASE IF NOT EXISTS $1;"
readonly Q2="GRANT ALL ON *.* TO '$2'@'localhost' IDENTIFIED BY '$3';"
readonly Q3="FLUSH PRIVILEGES;"
readonly SQL="${Q1}${Q2}${Q3}"
 
# Do some parameter checking and bail if bad
if [ $# -ne $EXPECTED_ARGS ]
then
  echo "Usage: $0 dbname dbuser dbpass"
  exit $E_BADARGS
fi
 
# Run the actual command
$MYSQL -uroot -p -e "$SQL"
 
# Let the user know the database was created
green "Database $1 and user $2 created with a password you chose"