improved postgres support + added db encoding

This commit is contained in:
Serghey Rodin 2011-09-30 16:40:26 +03:00
commit bb0f156b89
3 changed files with 33 additions and 18 deletions

View file

@ -12,6 +12,7 @@ db_user="$user"_"$3"
db_password="$4" db_password="$4"
type="$5" type="$5"
host=$6 host=$6
encoding="${7-UTF8}"
# Importing variables # Importing variables
source $VESTA/conf/vars.conf source $VESTA/conf/vars.conf
@ -24,10 +25,10 @@ source $V_FUNC/db_func.sh
#----------------------------------------------------------# #----------------------------------------------------------#
# Checking arg number # 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 # 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 # Checking db system is enabled
is_system_enabled 'db' is_system_enabled 'db'

View file

@ -68,6 +68,7 @@ esac
# Adding host to conf # Adding host to conf
echo "$new_str" >> $V_DB/$type.conf echo "$new_str" >> $V_DB/$type.conf
chmod 650 $V_DB/$type.conf
#----------------------------------------------------------# #----------------------------------------------------------#

View file

@ -376,7 +376,8 @@ create_db_mysql() {
fi fi
# Adding database & checking result # 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 if [ '0' -ne "$code" ]; then
echo "Error: Connect failed" echo "Error: Connect failed"
log_event 'debug' "$E_DBHOST_UNAVAILABLE $V_EVENT" log_event 'debug' "$E_DBHOST_UNAVAILABLE $V_EVENT"
@ -405,7 +406,7 @@ create_db_pgsql() {
done done
export PGPASSWORD="$PASSWORD" 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 # Checking empty vars
if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then
@ -422,16 +423,27 @@ create_db_pgsql() {
exit $E_DBHOST_UNAVAILABLE exit $E_DBHOST_UNAVAILABLE
fi fi
# Adding database & checking result # Adding new role
$sql "CREATE DATABASE $database" >/dev/null 2>&1;code="$?" $sql "CREATE ROLE $db_user WITH LOGIN PASSWORD '$db_password'" >/dev/null
code=$?
if [ '0' -ne "$code" ]; then if [ '0' -ne "$code" ]; then
echo "Error: Connect failed" echo "Error: Connect failed"
log_event 'debug' "$E_DBHOST_UNAVAILABLE $V_EVENT" log_event 'debug' "$E_DBHOST_UNAVAILABLE $V_EVENT"
exit $E_DBHOST_UNAVAILABLE exit $E_DBHOST_UNAVAILABLE
fi fi
$sql "CREATE ROLE $db_user WITH LOGIN PASSWORD '$db_password'" # Adding database & checking result
$sql "GRANT ALL PRIVILEGES ON DATABASE $database TO $db_user" 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' export PGPASSWORD='pgsql'
} }
@ -460,7 +472,7 @@ is_mysql_host_alive() {
is_pgsql_host_alive() { is_pgsql_host_alive() {
# Checking connection # Checking connection
export PGPASSWORD="$db_password" 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="$?" $sql "SELECT VERSION()" >/dev/null 2>&1;code="$?"
if [ '0' -ne "$code" ]; then if [ '0' -ne "$code" ]; then
echo "Error: Connect failed" echo "Error: Connect failed"
@ -545,7 +557,7 @@ change_db_pgsql_password() {
done done
export PGPASSWORD="$PASSWORD" 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 # Checking empty vars
if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then
@ -638,7 +650,7 @@ del_db_pgsql() {
done done
export PGPASSWORD="$PASSWORD" 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 # Checking empty vars
if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then
@ -656,6 +668,7 @@ del_db_pgsql() {
fi fi
# Deleting database & checking result # 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="$?" $sql "DROP DATABASE $database" >/dev/null 2>&1;code="$?"
if [ '0' -ne "$code" ]; then if [ '0' -ne "$code" ]; then
echo "Error: Connect failed" echo "Error: Connect failed"
@ -666,10 +679,10 @@ del_db_pgsql() {
# Deleting user # Deleting user
check_users=$(grep "USER='$db_user'" $V_USERS/$user/db.conf |wc -l) check_users=$(grep "USER='$db_user'" $V_USERS/$user/db.conf |wc -l)
if [ 1 -ge "$check_users" ]; then if [ 1 -ge "$check_users" ]; then
$sql "DROP ROLE $db_user" >/dev/null 2>&1 $sql "REVOKE CONNECT ON DATABASE template1 FROM $db_user" >/dev/null
else $sql "DROP ROLE $db_user" >/dev/null
$sql "REVOKE ALL PRIVILEGES ON $database FROM $db_user">/dev/null
fi fi
export PGPASSWORD='pgsql' export PGPASSWORD='pgsql'
} }
@ -727,7 +740,7 @@ dump_db_pgsql() {
done done
export PGPASSWORD="$PASSWORD" 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" dumper="pg_dump -h $HOST -U $USER -p $PORT -c -d -O -x -i -f"
# Checking empty vars # Checking empty vars
if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then
@ -853,7 +866,7 @@ suspend_db_pgsql() {
done done
export PGPASSWORD="$PASSWORD" 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 # Checking empty vars
if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then
@ -911,7 +924,7 @@ unsuspend_db_pgsql() {
done done
export PGPASSWORD="$PASSWORD" 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 # Checking empty vars
if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then
@ -999,7 +1012,7 @@ get_disk_db_pgsql() {
done done
export PGPASSWORD="$PASSWORD" 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 # Checking empty vars
if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then