Source: https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/alter-owner/ Documentation version: v5.3.2 # ALTER OWNER `ALTER OWNER`将当前服务组中资源的所有权转移给另一用户。 ## 前提条件 先[连接 Graph 服务](https://dev-docs.yueshu.com.cn/v5.3.2/get-started/first-query/#connect),在 GQL 客户端中执行命令。 - 要更改资源对象的所有者,您必须是资源对象当前的所有者或具有该服务组的`ADMIN`角色的用户。 - 新 Owner 必须已创建并加入当前服务组。更多信息,请参见[创建用户](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authentication/manage-users/)和 [INVITE USER](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/data-admin/invite-user/)。 ## 语法 语法图BNF alter_owner_command ```` alter_owner_command ::= 'ALTER' 'OWNER' resource_object_type resource_object_reference 'TO' 'USER' user_name ```` ## 参数 ### `resource_object_type` 待更改所有者的资源对象的类型。支持的资源对象类型包括`SCHEMA`、`GRAPH TYPE`、`GRAPH`和`PROCEDURE`。 Note 位于路径`/default_schema`的默认 Schema 的所有者无法更改。更多信息,请参见 [CREATE SCHEMA](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/ddl/schema/create/)。 Schema Owner 发生变化时,新 Owner 隐式获得该 Schema 的`USAGE`。原 Owner 失去由 Schema Owner 身份提供的隐式访问权。此前直接或通过角色获得的`USAGE`仍然有效;如果没有此类授权,则必须获得`USAGE`才能继续访问该 Schema。更多信息,请参见 [Schema 访问控制](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/schema-access-control/)。 更多信息,请参见[权限参考](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/privilege-reference/)。 ### `resource_object_reference` 用于定位待转移资源的引用。可使用当前 Schema 中的名称,或带 Schema 路径的引用: | 资源类型 | 当前 Schema 中的写法 | 包含 Schema 路径的写法 | `SCHEMA` | `schema_reference` | `schema_reference` | `GRAPH TYPE`、`GRAPH`和`PROCEDURE` | `graph_type_name` `graph_name` `procedure_name(parameter_type, ...)` | `schema_reference/graph_type_name` `schema_reference/graph_name` ``schema_reference/procedure_name`(parameter_type, ...)` - `SCHEMA`对象始终使用`schema_reference`指定。 - 其他对象位于当前 Schema 时可省略 Schema 路径;位于其他 Schema 时,需包含`schema_reference`。设置和查看当前 Schema 见 [SESSION SET SCHEMA](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/sessions/set/) 和 [SHOW CURRENT_SCHEMA](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/data-admin/show/show-current-schema/)。 - `schema_reference`可以是对应 Schema 所在绝对路径或相对路径。更多信息,请参见 [CREATE SCHEMA](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/ddl/schema/create/#schema_reference)。 - 如果同名 UDP 存在多个签名,必须在 UDP 引用中指定参数类型。 ### `user_name` 资源对象的新所有者的用户名。 ## 示例 以下示例分别执行。`user1`需已加入服务组;`movie_type`和`movie`示例使用`/default_schema`中的[示例数据集](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/overview/example-dataset/),请先完成加载。 ### 更改 Schema 的所有者 ```` ''' CREATE SCHEMA IF NOT EXISTS /my_schema // 创建 Schema ''' ''' ALTER OWNER SCHEMA /my_schema TO USER user1 ''' ```` 作为新的 Schema Owner,`user1`隐式获得`/my_schema`的访问权。原 Owner 失去由 Schema Owner 身份提供的隐式访问权,但此前直接或通过角色获得的`USAGE`仍然有效。 ### 更改当前 Schema 中图类型的所有者 ```` ''' SESSION SET SCHEMA /default_schema ''' ''' ALTER OWNER GRAPH TYPE movie_type TO USER user1 ''' ```` ### 更改指定 Schema 中图类型的所有者 ```` ''' // 创建 Schema CREATE SCHEMA IF NOT EXISTS /my_schema ''' ''' // 为当前会话设置 Schema SESSION SET SCHEMA /my_schema ''' ''' // 在指定 Schema 中创建图类型 CREATE GRAPH TYPE IF NOT EXISTS /my_schema/my_graph_type AS {} ''' ''' // 更改指定 Schema 中图类型的所有者 ALTER OWNER GRAPH TYPE /my_schema/my_graph_type TO USER user1 ''' ```` ### 更改当前 Schema 中图的所有者 ```` ''' SESSION SET SCHEMA /default_schema ''' ''' ALTER OWNER GRAPH movie TO USER user1 ''' ```` 以具有`ADMIN`角色的用户执行`SHOW OBJECTS FOR USER user1`,确认资源出现在新 Owner 的列表中。也可以用`user1`登录后执行`SHOW OBJECTS`查看自己的资源。命令说明见 [SHOW OBJECTS](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/data-admin/show/show-objects/)。