# Example Usage # ssh user@host "sudo -n bash -s" -- < ./commands/db-setup.sh 'rootPass' "maindb" "maindbPass" if [ "$1" == "-h" ]; then echo "Usage:" echo " ./db-setup.sh " echo " or" echo " ./db-setup.sh" exit 0 fi if [ -z "$1" ] && [ -z "$2" ] && [ -z "$3" ]; then read -sp "Set root password: " rootPassword read -sp $'\n'"Confirm root password: " confirmPassword read -p $'\n'"Main Username: " MAINDB read -sp "Main user's password: " PASSWDDB else rootPassword="$1" confirmPassword="$1" MAINDB="$2" PASSWDDB="$3" fi export DEBIAN_FRONTEND="noninteractive" if [ "$rootPassword" == "$confirmPassword" ]; then echo -e "mysql-server mysql-server/root_password password $rootPassword" | debconf-set-selections echo -e "mysql-server mysql-server/root_password_again password $rootPassword" | debconf-set-selections apt-get -y install mysql-server else echo "Passwords do not match cancelling the installation" exit 1 fi # Adapted from https://stackoverflow.com/questions/33470753/create-mysql-database-and-user-in-bash-script # create random password #PASSWDDB="$(openssl rand -base64 12)" # replace "-" with "_" for database username #MAINDB=${USER_NAME//[^a-zA-Z0-9]/_} # mysql_secure_installation steps so you don't have too # https://bertvv.github.io/notes-to-self/2015/11/16/automating-mysql_secure_installation/ mysql -uroot -p${rootPassword} -e "DELETE FROM mysql.user WHERE User='';" # remove anonymous users mysql -uroot -p${rootPassword} -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');" # prevent root from logging in remotely mysql -uroot -p${rootPassword} -e "DROP DATABASE test;" # remove the public test database mysql -uroot -p${rootPassword} -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\_%';" # remove the public test database # Setup the main database this machine will be used for mysql -uroot -p${rootPassword} -e "CREATE DATABASE ${MAINDB} /*\!40100 DEFAULT CHARACTER SET utf8 */;" mysql -uroot -p${rootPassword} -e "CREATE USER ${MAINDB}@'%' IDENTIFIED BY '${PASSWDDB}';" mysql -uroot -p${rootPassword} -e "GRANT ALL PRIVILEGES ON ${MAINDB}.* TO '${MAINDB}'@'%';" mysql -uroot -p${rootPassword} -e "FLUSH PRIVILEGES;" exit 0