Использование сценариев bash Я пытаюсь установить права доступа только для чтения к роли PostgreSQL:
Команда psql
вызывается с использованием функции pgexec
:
pgexec() {
local cmd=$1
sudo -u postgres psql -c "$cmd"
}
Iиспользуйте приведенную выше функцию для нескольких команд psql (одной или нескольких строк)
function set_permissions(){
...
if [[ $permissions == read ]]
then
output=$(pgexec "GRANT CONNECT ON DATABASE ${database} TO ${role};
\c ${database};
GRANT USAGE ON SCHEMA ${schema} TO ${role};
GRANT SELECT ON ALL TABLES IN SCHEMA ${schema} TO ${role};
GRANT SELECT ON ALL SEQUENCES IN SCHEMA ${schema} TO ${role};
ALTER DEFAULT PRIVILEGES IN SCHEMA ${schema} GRANT SELECT ON TABLES TO ${role};
ALTER DEFAULT PRIVILEGES IN SCHEMA ${schema} GRANT SELECT ON SEQUENCES TO ${role};" 2>1)
if [[ "$?" -eq 0 ]]
then
echo "${role_name} was granted permissions $perm_read"
return 0
else
echo "Error - $output"
return 4
fi
...
}
В результате я получу
Error - .
Я ожидаю $output
возвратаошибка.
Я использовал отладку, и запросы SQL выглядят нормально