Разрешить произвольному пользователю читать sys.queue MonetDB - PullRequest
0 голосов
/ 26 апреля 2018

Я создал пользователя foouser и схему fooschema с несколькими таблицами в нем. Foouser выполняет длительные запросы к своим таблицам в fooschema .

Теперь я хотел бы проверить статус запросов. Однако foouser не имеет достаточных разрешений для доступа к sys.queue таблица / представление:

sql>SELECT * FROM sys.queue;
SELECT: access denied for foouser to table 'sys.queue'
sql>SELECT * FROM sys.queue();
SELECT: no such operator 'queue'

Пользователь monetdb имеет необходимые разрешения, но не видит запросы foosuer , а только свои собственные:

sql>SELECT * FROM sys.queue;
+---------+---------+----------------------------+----------------------------+----------+---------+-----------+--------------------------+
| qtag    | user    | started                    | estimate                   | progress | status  | tag       | query                    |
+=========+=========+============================+============================+==========+=========+===========+==========================+
| 2593257 | monetdb | 2018-04-26 15:06:01.000000 | null                       |     null | running | 2593257@0 | select * from sys.queue; |
+---------+---------+----------------------------+----------------------------+----------+---------+-----------+--------------------------+

Итак, вопрос: как foouser может просматривать состояние своих запросов? Могу ли я предоставить foouser доступ к sys.queue()? Если так, то как?

1 Ответ

0 голосов
/ 09 ноября 2018

Я нашел решение, которое позволяет «обычному» пользователю читать свой собственный sys.queue. Однако этот подход предоставляет (на мой взгляд) доступ ко многим разрешениям для пользователя и поэтому не является оптимальным.

Подход заключается в предоставлении роли sysadmin foouser . Это должно быть сделано при входе в систему как monetdb пользователь (т. Е. Работает mclient -u monetdb):

sql> grant sysadmin to foouser;
operation successful

Впоследствии, если вы войдете в систему как foouser (т. Е. mclient -u foouser), вам нужно выбрать роль системного администратора, и теперь вы сможете увидеть свои собственные запущенные запросы, изучив sys.queue:

sql>set role sysadmin;
operation successful
sql>select * from sys.queue;
+---------+---------+-------------+-------------+------+---------+-----------+--------------+
| qtag    | user    | started     | estimate    | prog | status  | tag       | query        |
:         :         :             :             : ress :         :           :              :
+=========+=========+=============+=============+======+=========+===========+==============+
| 1627134 | foouser | 2018-11-09  | null        | null | running | 1627134@0 | insert into  |
:         :         : 17:48:57.00 :             :      :         :           : REDACTED     :
:         :         : 0000        :             :      :         :           : REDACTED     :
| 1627135 | foouser | 2018-11-09  | null        | null | running | 1627135@0 | select * fro |
:         :         : 17:48:57.00 :             :      :         :           : m sys.queue; :
:         :         : 0000        :             :      :         :           :              :
+---------+---------+-------------+-------------+------+---------+-----------+--------------+
2 tuples !1 field truncated!

Однако теперь (преднамеренно) ограниченный пользователь foouser имеет полные административные разрешения, что делает использование ограниченного пользователя несколько бессмысленным.

...