You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.7 KiB
54 lines
1.7 KiB
7 years ago
|
#!/bin/bash
|
||
|
|
||
|
function mysql_exec()
|
||
|
{
|
||
|
echo "$1" | mysql -u root --password="$mysql_root_pass" &> /dev/null
|
||
|
}
|
||
|
|
||
|
printf "\n################## Setup MySQL database ##################\n"
|
||
|
|
||
|
[ ! -z "$DB_HOST" ] && echo "DB_HOST=$DB_HOST"
|
||
|
[ -z "$DB_HOST" ] && read -p "MySQL database host: " DB_HOST
|
||
|
[ -z "$DB_HOST" ] && print_error "MySQL database host is required!"
|
||
|
|
||
|
# Get root pass (to create the database and the user)
|
||
|
mysql_root_pass=""
|
||
|
status_code=1
|
||
|
|
||
|
while [ $status_code -ne 0 ]; do
|
||
|
read -p "MySQL root password: " -s mysql_root_pass; echo
|
||
|
mysql_exec "SHOW DATABASES"
|
||
|
status_code=$?
|
||
|
done
|
||
|
|
||
|
[ ! -z "$DB_NAME" ] && echo "DB_NAME=$DB_NAME"
|
||
|
[ -z "$DB_NAME" ] && read -p "MySQL database name: " DB_NAME
|
||
|
[ -z "$DB_NAME" ] && print_error "MySQL database name is required!"
|
||
|
|
||
|
[ ! -z "$DB_USER" ] && echo "DB_USER=$DB_USER"
|
||
|
[ -z "$DB_USER" ] && read -p "MySQL user name for $DB_NAME (will be created): " DB_USER
|
||
|
[ -z "$DB_USER" ] && print_error "MySQL user is required!"
|
||
|
|
||
|
[ ! -z "$DB_PASS" ] && echo "DB_PASS=$DB_PASS"
|
||
|
[ -z "$DB_PASS" ] && read -p "MySQL user password for $DB_USER: " DB_PASS
|
||
|
[ -z "$DB_PASS" ] && print_error "MySQL user password is required!"
|
||
|
|
||
|
sql_result=$(mysql_exec "SHOW DATABASES" | grep -e "^$DB_NAME$")
|
||
|
|
||
|
# Check if the database doesn't already exist
|
||
|
if [ "$sql_result" != "" ]; then
|
||
|
echo "The $DB_NAME database already exists."
|
||
|
exit
|
||
|
fi
|
||
|
|
||
|
mysql_exec "SHOW GRANTS FOR $DB_USER@localhost"
|
||
|
if [ $? -eq 0 ]; then
|
||
|
echo "The MySQL user already exists."
|
||
|
exit
|
||
|
fi
|
||
|
|
||
|
mysql_exec "CREATE DATABASE \`$DB_NAME\`"
|
||
|
mysql_exec "CREATE USER $DB_USER@% IDENTIFIED BY '$DB_PASS'"
|
||
|
mysql_exec "GRANT ALL PRIVILEGES ON \`$DB_NAME\`.* TO $DB_USER@%"
|
||
|
mysql_exec "FLUSH PRIVILEGES"
|