
# 配置Spark表、列和数据库的用户权限
#### 操作场景
使用SparkSQL操作表或者数据库时，如果用户访问别人创建的表或数据库，需要授予对应的权限。为了实现更严格权限控制，SparkSQL也支持列级别的权限控制。如果要访问别人创建的表上某些列，需要授予列权限。以下介绍使用Manager角色管理功能在表授权、列授权和数据库授权三个场景下的操作。
#### 操作步骤
SparkSQL表授权、列授权、数据库授权与Hive的操作相同，详情请参见[Hive用户权限管理](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_0947.html)。
- 在权限管理中，为了方便用户使用，授予数据库下表的任意权限将自动关联该数据库目录的HDFS权限。为了避免产生性能问题，取消表的任意权限，系统不会自动取消数据库目录的HDFS权限，但对应的用户只能登录数据库和查看表名。
- 如果为角色添加或删除数据库的查询权限，数据库中的表也将自动添加或删除查询权限。此机制为Hive实现，SparkSQL与Hive保持一致。
- Spark不支持struct数据类型中列名称含有特殊字符（除字母、数字、下划线外的其他字符）。如果struct类型中列名称含有特殊字符，在FusionInsight Manager的"编辑角色"页面进行授权时，该列将无法正确显示。
 
#### 相关概念
SparkSQL的语句在SparkSQL中进行处理，权限要求如[表1]所示。
 表1使用SparkSQL表、列或数据库场景权限一览 
| **操作场景**                                       | **用户需要的权限**                                                                                                                                                                                                            |
|:---|:---|
| CREATE TABLE                                   | "创建", RWX+ownership（for create external table - the location） 说明： 按照指定文件路径创建datasource表时，需要path后面文件的RWX+ownership权限。 |
| DROP TABLE                                     | "Ownership"（of table）                                                                                                                                                                                                  |
| DROP TABLE PROPERTIES                          | "Ownership"                                                                                                                                                                                                            |
| DESCRIBE TABLE                                 | "查询"                                                                                                                                                                                                                   |
| SHOW PARTITIONS                                | "查询"                                                                                                                                                                                                                   |
| ALTER TABLE LOCATION                           | "Ownership", RWX+ownership (for new location)                                                                                                                                                                          |
| ALTER PARTITION LOCATION                       | "Ownership", RWX+ownership (for new partition location)                                                                                                                                                                |
| ALTER TABLE ADD PARTITION                      | "插入", RWX+ownership (for partition location)                                                                                                                                                                           |
| ALTER TABLE DROP PARTITION                     | "删除"                                                                                                                                                                                                                   |
| ALTER TABLE(all of them except the ones above) | "Update","Ownership"                                                                                                                                                                                                   |
| TRUNCATE TABLE                                 | "Ownership"                                                                                                                                                                                                            |
| CREATE VIEW                                    | "查询","Grant Of Select","创建"                                                                                                                                                                                            |
| ALTER VIEW PROPERTIES                          | "Ownership"                                                                                                                                                                                                            |
| ALTER VIEW RENAME                              | "Ownership"                                                                                                                                                                                                            |
| ALTER VIEW ADD PARTS                           | "Ownership"                                                                                                                                                                                                            |
| ALTER VIEW AS                                  | "Ownership"                                                                                                                                                                                                            |
| ALTER VIEW DROPPARTS                           | "Ownership"                                                                                                                                                                                                            |
| ANALYZE TABLE                                  | "查询", "插入"                                                                                                                                                                                                             |
| SHOW COLUMNS                                   | "查询"                                                                                                                                                                                                                   |
| SHOW TABLE PROPERTIES                          | "查询"                                                                                                                                                                                                                   |
| CREATE TABLE AS SELECT                         | "查询", "创建"                                                                                                                                                                                                             |
| SELECT                                         | "查询" 说明： 与表一样，对视图进行SELECT操作的时候需要有该视图的"查询"权限。                                                                         |
| INSERT                                         | "插入", "删除 (for overwrite)"                                                                                                                                                                                             |
| LOAD                                           | "插入", "删除", RWX+ownership(input location)                                                                                                                                                                              |
| SHOW CREATE TABLE                              | "查询","Grant Of Select"                                                                                                                                                                                                 |
| CREATE FUNCTION                                | "管理"                                                                                                                                                                                                                   |
| DROP FUNCTION                                  | "管理"                                                                                                                                                                                                                   |
| DESC FUNCTION                                  | -                                                                                                                                                                                                                      |
| SHOW FUNCTIONS                                 | -                                                                                                                                                                                                                      |
| MSCK (metastore check)                         | "Ownership"                                                                                                                                                                                                            |
| ALTER DATABASE                                 | "管理"                                                                                                                                                                                                                   |
| CREATE DATABASE                                | -                                                                                                                                                                                                                      |
| SHOW DATABASES                                 | -                                                                                                                                                                                                                      |
| EXPLAIN                                        | "查询"                                                                                                                                                                                                                   |
| DROP DATABASE                                  | "Ownership"                                                                                                                                                                                                            |
| DESC DATABASE                                  | -                                                                                                                                                                                                                      |
| CACHE TABLE                                    | "查询"                                                                                                                                                                                                                   |
| UNCACHE TABLE                                  | "查询"                                                                                                                                                                                                                   |
| CLEAR CACHE TABLE                              | "管理"                                                                                                                                                                                                                   |
| REFRESH TABLE                                  | "查询"                                                                                                                                                                                                                   |
| ADD FILE                                       | "管理"                                                                                                                                                                                                                   |
| ADD JAR                                        | "管理"                                                                                                                                                                                                                   |
| HEALTHCHECK                                    | -                                                                                                                                                                                                                      |
   
