我正在尝试向新创建的用户帐户授予读/写/批量导入表权限。使用累计外壳中的通配符一次向所有表授予权限没有成功。
我尝试了以下授权命令变体:
grant Table.READ -t * ...
grant Table.READ -t '*' ...
grant Table.READ -t \\* ...
grant Table.READ -p * ...
grant Table.READ -p so_* ...
grant Table.* ...
对于-t / -p通配符,出现以下错误之一:
WARN:未找到符合您条件的表
错误:java.util.regex.PatternSyntaxException:索引0附近晃来晃去的元字符'*'
错误:org.apache.accumulo.core.client.TableNotFoundException:表*不存在
对于表格。*,我得到:
错误:java.lang.IllegalArgumentException:没有此类表权限
我有很多要授予权限的表,所以我真的希望可以使用通配符。
答案 0 :(得分:1)
通配符当前不是一个选项。授予用户对表的权限应谨慎执行。如果必须授予用户访问许多表的权限,则可以为list the tables和grant permission创建一个小型Java程序。
如果您事先知道很多表都在同一个“安全域”中,则可以创建一个表“ namespace”和grant permission to all tables in the namespace。
如果必须使用外壳程序(不是主要的API,并且仅用于分类和小的琐碎操作),则可以通过创建一个小的脚本并将其作为批处理来执行。使用-?
或--help
选项运行shell,以查看可从文件或STDIN执行命令的可用方法。
如果您希望提交添加通配符功能的请求,则应contact the developers或open an issue or create a new pull request to propose the change。