75 lines
1.8 KiB
Bash
75 lines
1.8 KiB
Bash
#!/bin/sh
|
|
|
|
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
|
|
|
|
HOST=localhost
|
|
PORT=5432
|
|
PGPASSWORD=$PG_PASS
|
|
USER=postgres
|
|
TPL=template1
|
|
|
|
pathB=./backup
|
|
DBUSER=$DB_USER
|
|
DBPASS=$DB_PASS
|
|
DATABASE=$DB_NAME
|
|
|
|
psql_connect() {
|
|
export PGPASSWORD
|
|
psql -h $HOST -U $USER -p $PORT -c "SELECT VERSION()" > /dev/null 2> pg_restore.tmp
|
|
if [ '0' -ne "$?" ]; then
|
|
echo "Can't connect to PostgreSQL $HOST\n$(cat pg_restore.tmp)"
|
|
echo "Error: Connection to $HOST failed"
|
|
exit
|
|
fi
|
|
rm pg_restore.tmp
|
|
}
|
|
|
|
psql_query() {
|
|
sql_tmp=$(mktemp)
|
|
echo "$1" > $sql_tmp
|
|
export PGPASSWORD
|
|
psql -h $HOST -U $USER -f "$sql_tmp"
|
|
#2> /dev/null
|
|
rm -f $sql_tmp
|
|
}
|
|
|
|
add_pgsql_database() {
|
|
psql_connect
|
|
|
|
#query="CREATE ROLE $DBUSER WITH LOGIN PASSWORD '$DBPASS'"
|
|
#psql_query "$query" > /dev/null
|
|
|
|
query="CREATE DATABASE $DATABASE OWNER $DBUSER"
|
|
if [ "$TPL" = 'template0' ]; then
|
|
query="$query ENCODING '$charset' TEMPLATE $TPL"
|
|
else
|
|
query="$query TEMPLATE $TPL"
|
|
fi
|
|
psql_query "$query" > /dev/null
|
|
|
|
query="GRANT ALL PRIVILEGES ON DATABASE $DATABASE TO $DBUSER"
|
|
psql_query "$query" > /dev/null
|
|
|
|
query="GRANT CONNECT ON DATABASE template1 to $DBUSER"
|
|
psql_query "$query" > /dev/null
|
|
|
|
query="SELECT rolpassword FROM pg_authid WHERE rolname='$DBUSER'"
|
|
md5=$(psql_query "$query" | grep md5 | cut -f 2 -d \ )
|
|
}
|
|
|
|
psql_connect
|
|
|
|
query="REVOKE ALL PRIVILEGES ON DATABASE $DATABASE FROM $DBUSER"
|
|
psql_query "$query"
|
|
|
|
query="DROP DATABASE $DATABASE"
|
|
psql_query "$query"
|
|
|
|
add_pgsql_database
|
|
|
|
PGPASSWORD=$PG_PASS
|
|
export PGPASSWORD
|
|
pg_restore -j 2 -h $HOST -U $DBUSER -d $DATABASE $pathB/$1
|
|
|
|
unset PGPASSWORD
|