Skip to content

Instantly share code, notes, and snippets.

@newmen
Created March 10, 2015 09:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save newmen/5ad861a10ac50bbbf45d to your computer and use it in GitHub Desktop.
Save newmen/5ad861a10ac50bbbf45d to your computer and use it in GitHub Desktop.
PSQL change tables owner and grant major privileges to user
#!/bin/sh
if [ "$#" -ne 2 ]; then
echo "Usage $0 new_owner target_db"
exit 1
fi
$NEW_OWNER=$1
$TARGET_DB=$2
psql -c "GRANT INSERT ON ALL TABLES IN SCHEMA public TO ${NEW_OWNER};" $TARGET_DB
psql -c "GRANT SELECT ON ALL TABLES IN SCHEMA public TO ${NEW_OWNER};" $TARGET_DB
psql -c "GRANT UPDATE ON ALL TABLES IN SCHEMA public TO ${NEW_OWNER};" $TARGET_DB
psql -c "GRANT DELETE ON ALL TABLES IN SCHEMA public TO ${NEW_OWNER};" $TARGET_DB
psql -c "GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO ${NEW_OWNER};" $TARGET_DB
for tbl in `psql -qAt -c "SELECT tablename FROM pg_tables WHERE schemaname = 'public';" $TARGET_DB`; do
psql -c "ALTER TABLE $tbl OWNER TO $NEW_OWNER" $TARGET_DB
done
for tbl in `psql -qAt -c "SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = 'public';" $TARGET_DB`; do
psql -c "ALTER TABLE $tbl OWNER TO $NEW_OWNER" $TARGET_DB
done
for tbl in `psql -qAt -c "SELECT table_name FROM information_schema.views WHERE table_schema = 'public';" $TARGET_DB`; do
psql -c "ALTER TABLE $tbl OWNER TO $NEW_OWNER" $TARGET_DB
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment