查看Teradata数据库用户对于表的操作权限

通过dbc.allrights表中的UserName列,DatabaseName列,TableName列和AccessRight列的查询可以获取指定用于对于指定数据库中指定表的操作权限。可用于在执行某条SQL语句之前,判定当前用户是否有执行此语句的权限,在权限不足时还可以尝试自动授权(不太安全,执行完应当revoke)等措施。

AccessRight列缩写词对应列表(共40个):

AccessRight含义
AFALTER FUNCTION
APALTER PROCEDURE
ASABORT SESSION
CDCREATE DATABASE
CFCREATE FUNCTION
CGCREATE TRIGGER
CMCREATE MACRO
COCREATE PROFILE
CPCHECKPOINT
CRCREATE ROLE
CTCREATE TABLE
CUCREATE USER
CVCREATE VIEW
DDELETE
DDDROP DATABASE
DFDROP FUNCTION
DGDROP TRIGGER
DMDROP MACRO
DODROP PROFILE
DPDUMP
DRDROP ROLE
DTDROP TABLE
DUDROP USER
DVDROP VIEW
EEXECUTE
EFEXECUTE FUNCTION
IINSERT
IXINDEX
MRMONITOR RESOURCE
MSMONITOR SESSION
PCCREATE PROCEDURE
PDDROP PROCEDURE
PEEXECUTE PROCEDURE
ROREPLICATION OVERRIDE
RRETRIEVE/SELECT
RFREFERENCE
RSRESTORE
SSSET SESSION RATE
SRSET RESOURCE RATE
UUPDATE

示例SQL语句:

select username, databasename, tablename, accessright from dbc.allrights 

    where databasename='systemfe' and username='dbc' and tablename='opt_ras_table';
上述语句的执行结果为:

*** Query completed. 12 rows found. 4 columns returned.

*** Total elapsed time was 1 second.
 

UserName                        DatabaseName                    TableName                       AccessRight

------------------------------  ------------------------------  ------------------------------  -----------

DBC                             SystemFe                        opt_ras_table                   DT

DBC                             SystemFe                        opt_ras_table                   U

DBC                             SystemFe                        opt_ras_table                   DG

DBC                             SystemFe                        opt_ras_table                   RF

DBC                             SystemFe                        opt_ras_table                   RS

DBC                             SystemFe                        opt_ras_table                   R

DBC                             SystemFe                        opt_ras_table                   I

DBC                             SystemFe                        opt_ras_table                   CG

DBC                             SystemFe                        opt_ras_table                   ST

DBC                             SystemFe                        opt_ras_table                   DP

DBC                             SystemFe                        opt_ras_table                   D

DBC                             SystemFe                        opt_ras_table                   IX

如下的SQL语句可以自动构建出授予权限的SQL语句(即 GRANT语句):

SEL 
 
TRIM(username) 
 
,TRIM(databasename)
 
,TRIM(tablename)
 
,'GRANT '|| CASE 
 
WHEN AccessRight = 'AF ' THEN 'ALTER FUNCTION' 
 
WHEN AccessRight = 'AP ' THEN 'ALTER PROCEDURE' 
 
WHEN AccessRight = 'AS ' THEN 'ABORT SESSION' 

WHEN AccessRight = 'CD ' THEN 'CREATE DATABASE' 

WHEN AccessRight = 'CF ' THEN 'CREATE FUNCTION' 

WHEN AccessRight = 'CG ' THEN 'CREATE TRIGGER' 

WHEN AccessRight = 'CM ' THEN 'CREATE MACRO' 

WHEN AccessRight = 'CO ' THEN 'CREATE PROFILE' 

WHEN AccessRight = 'CP ' THEN 'CHECKPOINT' 

WHEN AccessRight = 'CR ' THEN 'CREATE ROLE' 

WHEN AccessRight = 'CT ' THEN 'CREATE TABLE' 

WHEN AccessRight = 'CU ' THEN 'CREATE USER' 

WHEN AccessRight = 'CV ' THEN 'CREATE VIEW' 

WHEN AccessRight = 'D ' THEN 'DELETE' 

WHEN AccessRight = 'DD ' THEN 'DROP DATABASE' 

WHEN AccessRight = 'DF ' THEN 'DROP FUNCTION' 

WHEN AccessRight = 'DG ' THEN 'DROP TRIGGER' 

WHEN AccessRight = 'DM ' THEN 'DROP MACRO' 

WHEN AccessRight = 'DO ' THEN 'DROP PROFILE' 

WHEN AccessRight = 'DP ' THEN 'DUMP' 

WHEN AccessRight = 'DR ' THEN 'DROP ROLE' 

WHEN AccessRight = 'DT ' THEN 'DROP TABLE' 

WHEN AccessRight = 'DU ' THEN 'DROP USER' 

WHEN AccessRight = 'DV ' THEN 'DROP VIEW' 

WHEN AccessRight = 'E ' THEN 'EXECUTE' 

WHEN AccessRight = 'EF ' THEN 'EXECUTE FUNCTION' 

WHEN AccessRight = 'I ' THEN 'INSERT' 

WHEN AccessRight = 'IX ' THEN 'INDEX' 

WHEN AccessRight = 'MR ' THEN 'MONITOR RESOURCE' 

WHEN AccessRight = 'MS ' THEN 'MONITOR SESSION' 

WHEN AccessRight = 'PC ' THEN 'CREATE PROCEDURE' 

WHEN AccessRight = 'PD ' THEN 'DROP PROCEDURE' 

WHEN AccessRight = 'PE ' THEN 'EXECUTE PROCEDURE' 

WHEN AccessRight = 'RO ' THEN 'REPLICATION OVERRIDE' 

WHEN AccessRight = 'R ' THEN 'RETRIEVE/SELECT' 

WHEN AccessRight = 'RF ' THEN 'REFERENCE' 

WHEN AccessRight = 'RS ' THEN 'RESTORE' 

WHEN AccessRight = 'SS ' THEN 'SET SESSION RATE' 

WHEN AccessRight = 'SR ' THEN 'SET RESOURCE RATE' 

WHEN AccessRight = 'U ' THEN 'UPDATE' 

END || ' ON '||TRIM(databasename)||'.'||TRIM(tablename)||' to '||TRIM(username)||';' AS Permission

FROM dbc.AllRights

WHERE DatabaseName = 'DBNAME' and USERNAME = 'LOGGEDINUSERNAME' AND TABLENAME = 'TABLENAME';


  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值