| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- #!/bin/bash
- # info: change database owner
- # options: DATABASE USER
- #
- # The function for changing database owner.
- #----------------------------------------------------------#
- # Variable&Function #
- #----------------------------------------------------------#
- # Argument definition
- database=$1
- user=$2
- # Includes
- source $VESTA/func/main.sh
- source $VESTA/func/db.sh
- source $VESTA/func/rebuild.sh
- source $VESTA/conf/vesta.conf
- #----------------------------------------------------------#
- # Verifications #
- #----------------------------------------------------------#
- check_args '2' "$#" 'DATABASE USER'
- is_format_valid 'database' 'user'
- is_system_enabled "$DB_SYSTEM" 'DB_SYSTEM'
- is_object_valid 'user' 'USER' "$user"
- is_object_unsuspended 'user' 'USER' "$user"
- # Check owner existance
- owner=$(echo $database | cut -f 1 -d '_')
- if [ ! -e "$VESTA/data/users/$owner" ]; then
- echo "Error: database owner doesn't exist"
- log_event "$E_NOTEXIST" "$ARGUMENTS"
- exit $E_NOTEXIST
- fi
- # Check if owner is the same as the dst user
- if [ "$owner" = "$user" ]; then
- exit
- fi
- # Check db existance
- db_data=$(grep "DB='$database'" $VESTA/data/users/$owner/db.conf)
- if [ -z "$db_data" ]; then
- echo "Error: database $database doesn't exist"
- log_event "$E_NOTEXIST" "$ARGUMENTS"
- exit $E_NOTEXIST
- fi
- # Check if datbase name is uniq
- new_db=$(echo $database | sed "s/^${owner}_/${user}_/")
- check_db=$(grep "DB='$new_db'" $VESTA/data/users/$user/db.conf)
- if [ ! -z "$check_db" ]; then
- echo "Error: $new_db database exists"
- log_event "$E_EXISTS" "$ARGUMENTS"
- exit $E_EXISTS
- fi
- #----------------------------------------------------------#
- # Action #
- #----------------------------------------------------------#
- # Creating temporary directory
- tmpdir=$(mktemp -p $BACKUP -d)
- if [ "$?" -ne 0 ]; then
- echo "Error: can't create $tmpdir"
- log_event "$E_NOTEXIST" "$ARGUMENTS"
- exit $E_NOTEXIST
- fi
- # Suspend database
- $BIN/v-suspend-database $owner $database > /dev/null 2>&1
- # Dump database
- eval $db_data
- dump="$tmpdir/$database.$TYPE.sql"
- grants="$tmpdir/$database.$TYPE.$DBUSER"
- case $TYPE in
- mysql) dump_mysql_database ;;
- pgsql) dump_pgsql_database ;;
- esac
- # Import configuration
- db_data=$(echo "$db_data" | sed "s/'${owner}_/'${user}_/g")
- echo "$db_data" >> $VESTA/data/users/$user/db.conf
- eval $db_data
- # Unsuspend db
- $BIN/v-unsuspend-database $user $new_db > /dev/null 2>&1
- # Rebuild databases
- $BIN/v-rebuild-databases $user
- # Import dump
- case $TYPE in
- mysql) import_mysql_database $dump ;;
- pgsql) import_pgsql_database $dump ;;
- esac
- # Deleting tmpdir
- rm -rf $tmpdir
- # Remove old database
- $BIN/v-unsuspend-database $owner $database > /dev/null 2>&1
- $BIN/v-delete-database $owner $database > /dev/null 2>&1
- # Update counters
- $BIN/v-update-user-counters $owner
- $BIN/v-update-user-counters $user
- #----------------------------------------------------------#
- # Vesta #
- #----------------------------------------------------------#
- # Logging
- log_event "$OK" "$ARGUMENTS"
- exit
|