Informix, предоставить право выбора на все таблицы

StackOverflow https://stackoverflow.com/questions/1232305

  •  22-07-2019
  •  | 
  •  

Вопрос

С помощью Informix я могу предоставить выбор для такой таблицы;

grant select on 'dba'.mytable to someuser as dba;

Как я могу выполнить это для всех таблиц в базе данных?

Это было полезно?

Решение

Нет простого способа сделать это (ни в стандарте SQL, ни в Informix), но обычно это не требуется, поскольку эта конкретная привилегия обычно предоставляется по умолчанию. Однако я полагаю, что на самом деле вы тоже хотите выполнять более общие операции и знать, какие есть варианты.

В зависимости от того, что вы хотите сделать, и от того, как настроена ваша система, вы можете достичь своих целей различными способами.

Грубая сила - прямой ответ на вопрос

 SELECT 'GRANT SELECT ON "' || TRIM(owner) || '".' || TRIM(tabname) ||
        ' TO someuser AS dba;'
     FROM "informix".systables
     WHERE tabid >= 100;

Возьмите вывод из этого и вставьте его в программу. Я использую SQLCMD для работы, не в последнюю очередь потому, что она не генерирует нежелательный вывод:

sqlcmd -d dbname -e "
 SELECT 'GRANT SELECT ON \"' || TRIM(owner) || '\".' || TRIM(tabname) ||
        ' TO someuser AS dba;'
     FROM "informix".systables
     WHERE tabid >= 100;" |
sqlcmd -d dbname -f -

Для обхода оболочки необходимы дополнительные обратные слеши. Опции -f - не являются строго необходимыми, но делают явным, что второй SQLCMD будет читать из стандартного ввода. Если вы используете DB-Access, вам нужно беспокоиться о словоблудии, которое оно генерирует - именно поэтому я и написал SQLCMD.

Понятно, что это решение может быть легко подготовлено и обобщено - вам просто нужно быть осторожным с использованием кавычек.

Использование ролей

Другой вариант - создать роль, обладающую всеми необходимыми разрешениями, а затем предоставить эту роль пользователям по мере необходимости. Недостатком этого является то, что вашему программному обеспечению необходимо установить роль, чтобы люди, подключающиеся, имели эту привилегию. Одна возможность состоит в том, чтобы установить роль только для выбора в качестве роли по умолчанию для каждого пользователя.

Использование Server Studio Java Edition

SSJE имеет инструменты управления привилегиями для упрощения этой задачи.

Использование Open Admin Too

OAT содержит инструменты, помогающие управлять привилегиями.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top