v-change-database-user 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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 definition
  10. user=$1
  11. database=$2
  12. dbuser="$user"_"$3"
  13. password=$4; HIDE=4
  14. # Includes
  15. source $HESTIA/func/main.sh
  16. source $HESTIA/func/db.sh
  17. source $HESTIA/func/rebuild.sh
  18. source $HESTIA/conf/hestia.conf
  19. #----------------------------------------------------------#
  20. # Verifications #
  21. #----------------------------------------------------------#
  22. check_args '3' "$#" 'USER DATABASE DBUSER [DBPASS]'
  23. is_format_valid 'user' 'database' 'dbuser'
  24. is_system_enabled "$DB_SYSTEM" 'DB_SYSTEM'
  25. is_object_valid 'user' 'USER' "$user"
  26. is_object_unsuspended 'user' 'USER' "$user"
  27. is_object_valid 'db' 'DB' "$database"
  28. is_object_unsuspended 'db' 'DB' "$database"
  29. is_password_valid
  30. dbpass="$password"
  31. # Perform verification if read-only mode is enabled
  32. check_hestia_demo_mode
  33. #----------------------------------------------------------#
  34. # Action #
  35. #----------------------------------------------------------#
  36. # Compare old and new user
  37. old_dbuser=$(get_object_value 'db' 'DB' "$database" '$DBUSER')
  38. if [ "$old_dbuser" = "$dbuser" ]; then
  39. exit
  40. fi
  41. # Set new dbuser
  42. update_object_value 'db' 'DB' "$database" '$DBUSER' "$dbuser"
  43. # Get database values
  44. get_database_values
  45. #Fix issue #1084 with "Upper case not allowed with PGSQL"
  46. if [ "$TYPE" = "pgsql" ]; then
  47. dbuser=$(echo $dbuser | tr '[:upper:]' '[:lower:]');
  48. fi
  49. # Rebuild database
  50. case $TYPE in
  51. mysql) rebuild_mysql_database ;;
  52. pgsql) rebuild_pgsql_database ;;
  53. esac
  54. # Change password
  55. if [ ! -z "$dbpass" ]; then
  56. case $TYPE in
  57. mysql) change_mysql_password ;;
  58. pgsql) change_pgsql_password ;;
  59. esac
  60. # Update config value
  61. update_object_value 'db' 'DB' "$database" '$MD5' "$md5"
  62. fi
  63. # Remove old user
  64. check_old_dbuser=$(grep "DBUSER='$old_dbuser'" $USER_DATA/db.conf)
  65. if [ -z "$check_old_dbuser" ]; then
  66. case $TYPE in
  67. mysql) delete_mysql_user ;;
  68. pgsql) delete_pgsql_user ;;
  69. esac
  70. fi
  71. #----------------------------------------------------------#
  72. # Hestia #
  73. #----------------------------------------------------------#
  74. # Logging
  75. log_history "changed $database database user to $dbuser"
  76. log_event "$OK" "$ARGUMENTS"
  77. exit