v-change-database-user 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #!/bin/bash
  2. # info: change database username
  3. # options: USER DATABASE DBUSER [DBPASS]
  4. #
  5. # The function for changing database user. It uses the
  6. #----------------------------------------------------------#
  7. # Variable&Function #
  8. #----------------------------------------------------------#
  9. # Argument defenition
  10. user=$1
  11. database=$2
  12. dbuser="$user"_"$3"
  13. dbpass=$4
  14. # Includes
  15. source $VESTA/func/main.sh
  16. source $VESTA/func/db.sh
  17. source $VESTA/func/rebuild.sh
  18. source $VESTA/conf/vesta.conf
  19. # Hiding password
  20. A4='******'
  21. EVENT="$DATE $TIME $SCRIPT $A1 $A2 $A3 $A4 $A5 $A6 $A7 $A8 $A9"
  22. #----------------------------------------------------------#
  23. # Verifications #
  24. #----------------------------------------------------------#
  25. check_args '3' "$#" 'USER DATABASE DBUSER [DBPASS]'
  26. validate_format 'user' 'database' 'dbuser'
  27. if [ ! -z "$dbpass" ]; then
  28. validate_format 'dbpass'
  29. fi
  30. is_system_enabled "$DB_SYSTEM" 'DB_SYSTEM'
  31. is_object_valid 'user' 'USER' "$user"
  32. is_object_unsuspended 'user' 'USER' "$user"
  33. is_object_valid 'db' 'DB' "$database"
  34. is_object_unsuspended 'db' 'DB' "$database"
  35. # Compare old and new user
  36. old_dbuser=$(get_object_value 'db' 'DB' "$database" '$DBUSER')
  37. if [ "$old_dbuser" = "$dbuser" ]; then
  38. exit
  39. fi
  40. #----------------------------------------------------------#
  41. # Action #
  42. #----------------------------------------------------------#
  43. # Set new dbuser
  44. update_object_value 'db' 'DB' "$database" '$DBUSER' "$dbuser"
  45. # Get database values
  46. get_database_values
  47. # Rebuild datbase
  48. case $TYPE in
  49. mysql) rebuild_mysql_database ;;
  50. pgsql) rebuild_pgsql_database ;;
  51. esac
  52. # Change password
  53. if [ ! -z "$dbpass" ]; then
  54. case $TYPE in
  55. mysql) change_mysql_password ;;
  56. pgsql) change_pgsql_password ;;
  57. esac
  58. # Update config value
  59. update_object_value 'db' 'DB' "$database" '$MD5' "$md5"
  60. fi
  61. # Remove old user
  62. check_old_dbuser=$(grep "DBUSER='$old_dbuser'" $USER_DATA/db.conf)
  63. if [ -z "$check_old_dbuser" ]; then
  64. case $TYPE in
  65. mysql) delete_mysql_user ;;
  66. pgsql) delete_pgsql_user ;;
  67. esac
  68. fi
  69. #----------------------------------------------------------#
  70. # Vesta #
  71. #----------------------------------------------------------#
  72. # Logging
  73. log_history "changed $database database user to $dbuser"
  74. log_event "$OK" "$EVENT"
  75. exit