Skip to content

Instantly share code, notes, and snippets.

@jcook793
Created August 2, 2013 20:05
Show Gist options
  • Save jcook793/6143001 to your computer and use it in GitHub Desktop.
Save jcook793/6143001 to your computer and use it in GitHub Desktop.
Creates a MySQL user across several instances. Useful if you use replication but (for whatever reason) you don't replicate the "mysql" database.
#!/bin/bash
DEV_SERVERS="dev-db001 dev-db002"
QA_SERVERS="qa-db001 qa-db002"
STAGE_SERVERS="stage-db001 stage-db002"
PROD_SERVERS="prod-db001 prod-db002"
MYSQL=`which mysql`
read -p "Which environment (dev, qa, stage, prod): " ENVIRONMENT
case "${ENVIRONMENT}" in
"dev") SERVERS=${DEV_SERVERS};;
"qa") SERVERS=${QA_SERVERS};;
"stage") SERVERS=${STAGE_SERVERS};;
"prod") SERVERS=${PROD_SERVERS};;
*) echo "Invalid option"; exit;;
esac
read -p "Your MySQL username (${SERVERS}): " MYSQL_USER
read -s -p "Your MySQL password: " MYSQL_PASSWORD
echo; echo
read -p "New MySQL user: " NEW_USER
read -s -p "Password: " NEW_PASSWORD
echo; echo
Q1="CREATE USER '${NEW_USER}'@'localhost' IDENTIFIED BY '${NEW_PASSWORD}';"
Q2="GRANT ALL PRIVILEGES ON *.* TO '${NEW_USER}'@'localhost';"
Q3="CREATE USER '${NEW_USER}'@'%' IDENTIFIED BY '${NEW_PASSWORD}';"
Q4="GRANT ALL PRIVILEGES ON *.* TO '${NEW_USER}'@'%';"
Q5="FLUSH PRIVILEGES;"
SQL="${Q1}${Q2}${Q3}${Q4}${Q5}"
for SERVER in ${SERVERS}; do
echo "Creating ${NEW_USER} on ${SERVER}"
$MYSQL --user=${MYSQL_USER} --password=${MYSQL_PASSWORD} --host=${SERVER} --execute="$SQL"
done
echo; echo "Done"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment