# 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:

```shell
$ sudo chmod 755 mysql-db-create.sh
```

And run it:

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

Here’s the piece of bash code:

```bash
#!/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"
```
