-s save flag

This commit is contained in:
Matthew Saunders Brown 2021-10-03 12:18:08 -07:00
parent e6396b8871
commit b3e918f252

View File

@ -12,34 +12,65 @@ help()
thisfilename=$(basename -- "$0") thisfilename=$(basename -- "$0")
echo "Creates default MySQL database and db user for specified virtualhost." echo "Creates default MySQL database and db user for specified virtualhost."
echo "" echo ""
echo "usage: $thisfilename virtualhost. [OPTIONS]" echo "usage: $thisfilename virtualhost [OPTIONS]"
echo "" echo ""
echo " -h Print this help." echo " -h Print this help."
echo " -u USERNAME Username for accessing the database. Optional, autogenerated if none specified." echo " -u USERNAME Username for accessing the database. Optional, autogenerated if none specified."
echo " -p PASSWORD Password for username. Optional, random password generated if none specified." echo " -p PASSWORD Password for username. Optional, random password generated if none specified."
echo " -s Save db info to /home/username/.my.cnf. Warning! This inlcudes the unencrypted password."
echo " -v Verbose - output newly created db info to console."
echo "" echo ""
echo " MySQL database names is based on virtualhost, with . replaced by the word 'dot'" echo " MySQL database names is based on virtualhost with . replaced by the word 'dot'"
echo " and - replaced by the word 'dash'. If username is autogenerated it is based on" echo " and - replaced by the word 'dash'. If username is autogenerated it is based on"
echo " the shell username & the virtualhost name." echo " the shell username & the virtualhost name."
echo " e.g. for virtualost example.com the db name will be 'exampledotcom' and the" echo " e.g. for virtualost example.com the db name will be 'exampledotcom' and the"
echo " username will be examplec@example.com." echo " username will be examplec@example.com."
echo " db info stored in a file named /srv/www/$virtualhost/db_info.txt" echo " It is highly recommended to use either the -s or -v option if you don't use -p."
exit exit
} }
while getopts "hu:p:sv" opt; do
case "${opt}" in
h )
help
exit;;
u )
username=${OPTARG}
;;
p )
password=${OPTARG}
;;
s )
save=true
;;
v )
verbose=true
;;
\? )
echo "Invalid option: $OPTARG"
exit 1
;;
: )
echo "Invalid option: $OPTARG requires an argument"
exit 1
;;
esac
done
shift $((OPTIND-1))
# check for and set virtualhost # check for and set virtualhost
if [ -n "$1" ]; then if [ -n "$1" ]; then
if [ $1 == "-h" ]; then virtualhost="${1,,}"
help
else
virtualhost="${1,,}"
fi
else else
echo "virtualhost not set" echo "virtualhost not set"
exit 1 exit 1
fi fi
echo "virtualhost=$virtualhost username=$username password=$password save=$save verbose=$verbose"
exit
# make sure virtualhost exists # make sure virtualhost exists
if [ ! -d /srv/www/$virtualhost ]; then if [ ! -d /srv/www/$virtualhost ]; then
echo "virtualhost $virtualhost does not exist" echo "virtualhost $virtualhost does not exist"
@ -79,12 +110,17 @@ mysql -e "GRANT ALL PRIVILEGES ON $database.* TO '$username'@'localhost';"
mysqladmin flush-privileges mysqladmin flush-privileges
# save mysql db info to file # save mysql db info to file
touch /srv/www/$virtualhost/db_info.txt if [ -n $save ]; then
chown $vhost_username:$vhost_username /srv/www/$virtualhost/db_info.txt touch /home/$vhost_username/.my.cnf
chmod 640 /srv/www/$virtualhost/db_info.txt chown $vhost_username:$vhost_username /home/$vhost_username/.my.cnf
echo "hostname=127.0.0.1" > /srv/www/$virtualhost/db_info.txt chmod 640 /home/$vhost_username/.my.cnf
echo "database=$database" >> /srv/www/$virtualhost/db_info.txt echo "[client]" > /home/$vhost_username/.my.cnf
echo "username=$username" >> /srv/www/$virtualhost/db_info.txt echo "host=127.0.0.1" >> /home/$vhost_username/.my.cnf
echo "password=$password" >> /srv/www/$virtualhost/db_info.txt echo "database=$database" >> /home/$vhost_username/.my.cnf
echo "user=$username" >> /home/$vhost_username/.my.cnf
echo "password=$password" >> /home/$vhost_username/.my.cnf
fi
echo "database '$database' created with username '$username' and password '$password'" if [ -n $verbose ]; then
echo "database=$database user=$username password=$password"
fi