我创建了一个用户 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()
的访问权限吗?如果是这样,怎么样?
答案 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 具有完全的管理权限,这使得使用受限制的用户显得毫无意义。