From bb0f156b891c8d33d6aa759fc13cc4cdca929575 Mon Sep 17 00:00:00 2001 From: Serghey Rodin Date: Fri, 30 Sep 2011 16:40:26 +0300 Subject: [PATCH] improved postgres support + added db encoding --- bin/v_add_db_base | 5 +++-- bin/v_add_db_host | 1 + func/db_func.sh | 45 +++++++++++++++++++++++++++++---------------- 3 files changed, 33 insertions(+), 18 deletions(-) diff --git a/bin/v_add_db_base b/bin/v_add_db_base index 50b1da60..c67bc08a 100755 --- a/bin/v_add_db_base +++ b/bin/v_add_db_base @@ -12,6 +12,7 @@ db_user="$user"_"$3" db_password="$4" type="$5" host=$6 +encoding="${7-UTF8}" # Importing variables source $VESTA/conf/vars.conf @@ -24,10 +25,10 @@ source $V_FUNC/db_func.sh #----------------------------------------------------------# # Checking arg number -check_args '5' "$#" 'user db db_user db_password type [host]' +check_args '5' "$#" 'user db db_user db_password type [host] [encoding]' # Checking argument format -format_validation 'user' 'database' 'db_user' 'db_password' +format_validation 'user' 'database' 'db_user' 'db_password' 'encoding' # Checking db system is enabled is_system_enabled 'db' diff --git a/bin/v_add_db_host b/bin/v_add_db_host index 5c2da0e2..7c759118 100755 --- a/bin/v_add_db_host +++ b/bin/v_add_db_host @@ -68,6 +68,7 @@ esac # Adding host to conf echo "$new_str" >> $V_DB/$type.conf +chmod 650 $V_DB/$type.conf #----------------------------------------------------------# diff --git a/func/db_func.sh b/func/db_func.sh index 72770810..1e1533df 100644 --- a/func/db_func.sh +++ b/func/db_func.sh @@ -376,7 +376,8 @@ create_db_mysql() { fi # Adding database & checking result - $sql "CREATE DATABASE $database" >/dev/null 2>&1;code="$?" + $sql "CREATE DATABASE $database CHARACTER SET $encoding" > /dev/null 2>&1 + code="$?" if [ '0' -ne "$code" ]; then echo "Error: Connect failed" log_event 'debug' "$E_DBHOST_UNAVAILABLE $V_EVENT" @@ -405,7 +406,7 @@ create_db_pgsql() { done export PGPASSWORD="$PASSWORD" - sql="psql -h $HOST -U $USER -d $TPL -p $PORT -c" + sql="psql -h $HOST -U $USER -p $PORT -c" # Checking empty vars if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then @@ -422,16 +423,27 @@ create_db_pgsql() { exit $E_DBHOST_UNAVAILABLE fi - # Adding database & checking result - $sql "CREATE DATABASE $database" >/dev/null 2>&1;code="$?" + # Adding new role + $sql "CREATE ROLE $db_user WITH LOGIN PASSWORD '$db_password'" >/dev/null + code=$? if [ '0' -ne "$code" ]; then echo "Error: Connect failed" log_event 'debug' "$E_DBHOST_UNAVAILABLE $V_EVENT" exit $E_DBHOST_UNAVAILABLE fi - $sql "CREATE ROLE $db_user WITH LOGIN PASSWORD '$db_password'" - $sql "GRANT ALL PRIVILEGES ON DATABASE $database TO $db_user" + # Adding database & checking result + sql_q="CREATE DATABASE $database OWNER $db_user" > /dev/null + if [ "$TPL" = 'template0' ]; then + sql_q="$sql_q ENCODING '$encoding' TEMPLATE $TPL" > /dev/null + else + sql_q="$sql_q TEMPLATE $TPL" > /dev/null + fi + $sql "$sql_q" >/dev/null + + + $sql "GRANT ALL PRIVILEGES ON DATABASE $database TO $db_user" > /dev/null + $sql "GRANT CONNECT ON DATABASE template1 to $db_user" > /dev/null export PGPASSWORD='pgsql' } @@ -460,7 +472,7 @@ is_mysql_host_alive() { is_pgsql_host_alive() { # Checking connection export PGPASSWORD="$db_password" - sql="psql -h $host -U $db_user -d $template -p $port -c" + sql="psql -h $host -U $db_user -p $port -c " $sql "SELECT VERSION()" >/dev/null 2>&1;code="$?" if [ '0' -ne "$code" ]; then echo "Error: Connect failed" @@ -545,7 +557,7 @@ change_db_pgsql_password() { done export PGPASSWORD="$PASSWORD" - sql="psql -h $HOST -U $USER -d $TPL -p $PORT -c" + sql="psql -h $HOST -U $USER -p $PORT -c" # Checking empty vars if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then @@ -638,7 +650,7 @@ del_db_pgsql() { done export PGPASSWORD="$PASSWORD" - sql="psql -h $HOST -U $USER -d $TPL -p $PORT -c" + sql="psql -h $HOST -U $USER -p $PORT -c" # Checking empty vars if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then @@ -656,6 +668,7 @@ del_db_pgsql() { fi # Deleting database & checking result + $sql "REVOKE ALL PRIVILEGES ON DATABASE $database FROM $db_user">/dev/null $sql "DROP DATABASE $database" >/dev/null 2>&1;code="$?" if [ '0' -ne "$code" ]; then echo "Error: Connect failed" @@ -666,10 +679,10 @@ del_db_pgsql() { # Deleting user check_users=$(grep "USER='$db_user'" $V_USERS/$user/db.conf |wc -l) if [ 1 -ge "$check_users" ]; then - $sql "DROP ROLE $db_user" >/dev/null 2>&1 - else - $sql "REVOKE ALL PRIVILEGES ON $database FROM $db_user">/dev/null + $sql "REVOKE CONNECT ON DATABASE template1 FROM $db_user" >/dev/null + $sql "DROP ROLE $db_user" >/dev/null fi + export PGPASSWORD='pgsql' } @@ -727,7 +740,7 @@ dump_db_pgsql() { done export PGPASSWORD="$PASSWORD" - sql="psql -h $HOST -U $USER -d $TPL -p $PORT -c" + sql="psql -h $HOST -U $USER -p $PORT -c" dumper="pg_dump -h $HOST -U $USER -p $PORT -c -d -O -x -i -f" # Checking empty vars if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then @@ -853,7 +866,7 @@ suspend_db_pgsql() { done export PGPASSWORD="$PASSWORD" - sql="psql -h $HOST -U $USER -d $TPL -p $PORT -c" + sql="psql -h $HOST -U $USER -p $PORT -c" # Checking empty vars if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then @@ -911,7 +924,7 @@ unsuspend_db_pgsql() { done export PGPASSWORD="$PASSWORD" - sql="psql -h $HOST -U $USER -d $TPL -p $PORT -c" + sql="psql -h $HOST -U $USER -p $PORT -c" # Checking empty vars if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then @@ -999,7 +1012,7 @@ get_disk_db_pgsql() { done export PGPASSWORD="$PASSWORD" - sql="psql -h $HOST -U $USER -d $TPL -p $PORT -c" + sql="psql -h $HOST -U $USER -p $PORT -c" # Checking empty vars if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then