用户是多个权限、子策略的组合,具体构成与策略类似。
命名规则
一个 Ultipa 实例中的用户不能重名。
- 2 ~ 64 个字符
- 必须以字母开头
- 仅允许使用字母,下划线和数字(即 _ 、A-Z、a-z、0-9)
- 密码长度 6 ~ 64 个字符,字符种类不限
查看用户
返回的表名:_user
返回的表头:username
|create
|graphPrivileges
|systemPrivileges
|propertyPrivileges
|policies
(用户名、创建时间、图集权限、系统权限、属性权限、子策略)
语法:
// 查看当前 Ultipa 实例中的所有用户信息
show().user()
// 查看当前 Ultipa 实例中的某个用户信息
show().user("<name>")
// 查看当前登录的用户信息
show().self()
创建用户
语法:
// 在当前 Ultipa 实例中创建一个用户
create().user(
"<username>",
"<password>",
<{}graph_privileges?>,
<[]system_privileges?>,
<[]policies?>,
<{}property_privileges?>
)
其中的数据格式为:
// <{}graph_privileges>
{
"<graph1>":["<graph_privilege>", "<graph_privilege>", ...],
"<graph2>":["<graph_privilege>", "<graph_privilege>", ...],
...
}
// <{}property_privileges>
{
"node": {
"read": [
["<graph>", "<@schema?>", "<property?>"],
["<graph>", "<@schema?>", "<property?>"],
...
],
"write": [
["<graph>", "<@schema?>", "<property?>"],
["<graph>", "<@schema?>", "<property?>"],
...
],
"deny": [
["<graph>", "<@schema?>", "<property?>"],
["<graph>", "<@schema?>", "<property?>"],
...
],
},
"edge": {
"read": [
["<graph>", "<@schema?>", "<property?>"],
["<graph>", "<@schema?>", "<property?>"],
...
],
"write": [
["<graph>", "<@schema?>", "<property?>"],
["<graph>", "<@schema?>", "<property?>"],
...
],
"deny": [
["<graph>", "<@schema?>", "<property?>"],
["<graph>", "<@schema?>", "<property?>"],
...
],
}
}
注1:图集名 "<graph>"
用星号代替为 "*"
时,表示当前 Ultipa 实例中的所有图集;同理, "<@schema>"
、 "<property>"
替为 "*"
时表示所有 schema、所有属性。
注2:由于参数 user()
采用下标传参法,当不设置前项但需设置后项时,前项需使用空括号占位。
示例:创建用户 Ultipa,设置密码 ultipaABC123,赋予针对所有图集的图集权限 UPDATE,ALGO,LTE,UFE,系统权限 STAT,TOP,KILL,以及针对所有属性的属性权限 WRITE
create().user(
"Ultipa",
"ultipaABC123",
{"*": ["UPDATE","ALGO","LTE","UFE"]},
["STAT","TOP","KILL"],
[],
{
"node": {
"write": [["*","*","*"]]
},
"edge": {
"write": [["*","*","*"]]
}
}
)
修改用户
语法:
// 修改当前 Ultipa 实例中的某个用户
alter().user("<username>").set({
password:"<new?>",
graph_privileges: <{}graph_privileges?>,
system_privileges: <[]system_privileges?>,
policies: <[]policies?>,
property_privileges: <{}property_privileges?>
})
其中 <{}graph_privileges>
和 <{}property_privileges>
的数据格式同创建命令 create().user()
。
示例:将用户 Ultipa 的密码修改为 ultipaFast
alter().user("Ultipa").set({password: "ultipaFast"})
示例:修改用户 Ultipa 的权限,使其只能查看图集 default 的元数据
alter().user("Ultipa").set({
graph_privileges: {"default": ["FIND"]},
property_privileges: {
"node": {
"read": [["default","*","*"]]
},
"edge": {
"read": [["default","*","*"]]
}
}
})
分析:只有当图集权限 FIND 和 属性权限 READ 同时给到图集 default 及其元数据时,用户才能查看该图集的元数据。
删除用户
语法:
// 从当前 Ultipa 实例中删除某个用户
drop().user("<name>")
重置管理员账户
重置管理员账户需要通过工具 ultipa-reset-user
在服务器端进行,该操作不属于 UQL 使用范畴。