允许任意用户读取MonetDB的sys.queue

时间:2018-04-26 15:10:37

标签: monetdb

我创建了一个用户 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 :(得分:0)

我找到了一种解决方案,允许“正常”用户读取自己的sys.queue。但是,此方法(按我的喜好)向用户授予许多权限,因此不是最佳方法。

方法是将 sysadmin 角色授予 foouser 。必须以 monetdb 用户身份登录(即运行mclient -u monetdb)来完成此操作:

sql> grant sysadmin to foouser;
operation successful

此后,如果您以 foouser (即mclient -u foouser)身份登录,则必须选择sysadmin角色,现在可以通过查看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 具有完全的管理权限,这使得使用受限制的用户显得毫无意义。