gaussdb的用户与权限

权限分类

  • 系统权限

  • 对象权限
    1.数据库databases
    connect 允许用户连接到指定的数据库
    create 允许在数据库中创建新的模式
    2.模式 SCHEMA
    CREATE 允许在模式中创建新的对象
    USAGE 允许访问包含在指定模式中的对象,若没有该权限,则只能看到这些对象的名字
    3.函数 FUNCTION
    EXECUTE允许使用指定的函数,以及利用这些函数实现的操作符
    4.表空间 TABLESPACE
    CREATE允许在表空间中创建表,允许在创建数据库和模式的时候把该表空间指定为缺省表空间。
    5.表TABLE
    INSERT\DELETE\UPDATE\SELECT 允许用户对指定表进行增删改查操作
    TRUNCATE 允许执行TRUNCATE语句删除指定表中的所有记录。
    REFERENCES 创建一个外键约束,必须拥有参考表和被参考表的REFERENCES权限

  • 角色权限

说明

  • 系统权限
    1.系统权限又称为用户属性,包括SYSADMIN、CREATEDB、CREATEROLE、AUDITADMIN、MONADMIN、OPRADMIN、POLADMIN、INHERIT、REPLICATION、VCADMIN和LOGIN等。
    系统权限一般通过CREATE/ALTER ROLE语法来指定。其中,SYSADMIN权限可以通过GRANT/REVOKE ALL PRIVILEGE授予或撤销。但系统权限无法通过ROLE和USER的权限被继承,也无法授予PUBLIC。
  • 对象权限
    1.要撤消已经授予的权限,可以使用REVOKE。
    2.对象所有者的权限(例如ALTER、DROP、COMMENT、INDEX、VACUUM、GRANT和REVOKE)是隐式拥有的,即只要拥有对象就可以执行对象所有者的这些隐式权限。对象所有者可以撤消自己的普通权限。
    3.数据库提供对象隔离的特性,对象隔离特性开启时,用户只能查看有权限访问的对象(表、视图、字段、函数),系统管理员不受影响。
    4.DATABASE、SCHEMA和USER名使用小写。数据库会默认把其名转为小写,连接串里面如果出现大写的对象名无法连接到数据库。
    5.优先通过角色来管理权限。使用角色管理权限,再将角色赋予用户。例如:
    角色和用户为多对多关系,一个角色可以赋予多个用户,修改角色中的权限,被赋予角色的用户权限就可以同时更新。
    删除用户时,不会影响到角色。
    新建用户后可以通过赋予角色快速获取所需权限。
    6.关键字PUBLIC表示该权限要赋予所有角色,包括以后创建的用户。PUBLIC可以看做是一个隐含定义好的组,它总是包括所有角色。任何角色或用户都将拥有通过GRANT直接赋予的权限和所属的权限,再加上PUBLIC的权限。
  • 角色权限

笔记

# gaussdb中查看用户都有哪些表的权限
SELECT * FROM information_schema.table_privileges WHERE GRANTEE='user_name'; 
#将表或视图的访问权限赋予指定的用户或角色
GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | ALTER | DROP | COMMENT | INDEX | VACUUM } [, ...]
      | ALL [ PRIVILEGES ] }
    ON { [ TABLE ] table_name [, ...]
       | ALL TABLES IN SCHEMA schema_name [, ...] }
    TO { [ GROUP ] role_name | PUBLIC } [, ...]
    [ WITH GRANT OPTION ];
# 将表中字段的访问权限赋予指定的用户或角色
GRANT { {{ SELECT | INSERT | UPDATE | REFERENCES | COMMENT } ( column_name [, ...] )} [, ...] 
      | ALL [ PRIVILEGES ] ( column_name [, ...] ) }
    ON [ TABLE ] table_name [, ...]
    TO { [ GROUP ] role_name | PUBLIC } [, ...]
    [ WITH GRANT OPTION ];
#将数据库的访问权限赋予指定的用户或角色
 GRANT { { CREATE | CONNECT | TEMPORARY | TEMP | ALTER | DROP | COMMENT } [, ...]
      | ALL [ PRIVILEGES ] }
    ON DATABASE database_name [, ...]
    TO { [ GROUP ] role_name | PUBLIC } [, ...]
    [ WITH GRANT OPTION ];
 #将函数的访问权限赋予给指定的用户或角色
 GRANT { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] }
    ON { FUNCTION {function_name ( [ {[ argmode ] [ arg_name ] arg_type} [, ...] ] )} [, ...]
       | ALL FUNCTIONS IN SCHEMA schema_name [, ...] }
    TO { [ GROUP ] role_name | PUBLIC } [, ...]
    [ WITH GRANT OPTION ];
 #将存储过程的访问权限赋予给指定的用户或角色
 GRANT { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] }
    ON { PROCEDURE {proc_name ( [ {[ argmode ] [ arg_name ] arg_type} [, ...] ] )} [, ...]
    TO { [ GROUP ] role_name | PUBLIC } [, ...]
    [ WITH GRANT OPTION ];
#回收指定表或视图上的权限
REVOKE [ GRANT OPTION FOR ]
    { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | ALTER | DROP | COMMENT | INDEX | VACUUM }[, ...] 
    | ALL [ PRIVILEGES ] }
    ON { [ TABLE ] table_name [, ...]
       | ALL TABLES IN SCHEMA schema_name [, ...] }
    FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ];
#回收表上指定字段的权限
REVOKE [ GRANT OPTION FOR ]
    { {{ SELECT | INSERT | UPDATE | REFERENCES | COMMENT } ( column_name [, ...] )}[, ...] 
    | ALL [ PRIVILEGES ] ( column_name [, ...] ) }
    ON [ TABLE ] table_name [, ...]
    FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ];
 # 回收指定数据库上的权限
 REVOKE [ GRANT OPTION FOR ]
    { { CREATE | CONNECT | TEMPORARY | TEMP | ALTER | DROP | COMMENT } [, ...] 
    | ALL [ PRIVILEGES ] }
   ON DATABASE database_name [, ...]
    FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ];
#回收指定函数上的权限
REVOKE [ GRANT OPTION FOR ]
    { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] }
    ON { FUNCTION {function_name ( [ {[ argmode ] [ arg_name ] arg_type} [, ...] ] )} [, ...]
       | ALL FUNCTIONS IN SCHEMA schema_name [, ...] }
    FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ];
#回收指定存储过程上的权限
REVOKE [ GRANT OPTION FOR ]
    { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] }
    ON { PROCEDURE {proc_name ( [ {[ argmode ] [ arg_name ] arg_type} [, ...] ] )} [, ...]
       | ALL PROCEDURE IN SCHEMA schema_name [, ...] }
    FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ];
#授予用户 user_name 对 database_name.table_name 表的 SELECT、INSERT、UPDATE、DELETE 权限。
GRANT SELECT,INSERT,UPDATE,DELETE ON database_name.table_name TO user_name;
#授予用户 user_name 对 database_name.table_name 的所有权限。
GRANT ALL PRIVILEGES ON database_name.table_name TO user_name;
#授予用户 user_name 对 database_name.table_name 的 SELECT、INSERT、UPDATE、DELETE 权限,并允许他将该权限传递给其他用户。
GRANT SELECT,INSERT,UPDATE,DELETE ON database_name.table_name TO user_name WITH GRANT OPTION;
#撤销用户 user_name 对 database_name.table_name 表的 SELECT、INSERT、UPDATE、DELETE 权限。
REVOKE SELECT,INSERT,UPDATE,DELETE on database_name.table_name FROM user_name;
#撤销用户 user_name 对 database_name.table_name 的所有权限。
REVOKE ALL PRIVILEGES ON database_name.table_name FROM user_name;
#撤销用户 user_name 对 database_name.table_name 表的 SELECT、INSERT、UPDATE、DELETE 权限。
#Tip:一个用户只能撤销由它自己直接赋予的权限,依赖性权限仍然存在,但如果声明了CASCADE,则所有依赖性权限都被撤销.
REVOKE SELECT,INSERT,UPDATE,DELETE ON database_name.table_name FROM user_name WITH GRANT OPTION;
#切换用户
set role joe password "gaussdb@123";
#更改用户joe的系统权限,为它添加创建用户的系统权限并去掉它创建数据的系统权限,执行如下命令
ALTER USER joe WITH NOCREATEDB CREATEROLE PASSWORD "Gauss@123";
#删除用户
DROP USER joe;
#将用户tom下的同名schema权限赋给jerry
grant usage on schema tom to jerry;
#将用户tom已经创建的表的select权限赋给jerry
grant select on all tables in schema tom to jerry;
#将用户tom未来在同名schema下创建的表的select权限赋给jerry -- 注意,其中for user tom是必须的,表示把用户tom将来在schema tom下创建的表的只读权限赋权给jerry -- 如果不加for user tom,缺省值为当前角色/用户
alter default privileges for user tom in schema tom grant select on tables to jerry;
#查看某张表当前的权限情况
select relname,relacl from pg_class where relname = 'pg_class';
#创建用户
create user test password "Gauss@123";
#创建角色
create role  test password "Gauss@123";   用户可以登陆,角色不可以登陆数据库。
#移除用户权限  角色可以赋权给用户,用户也可以赋权给角色
revoke  test1 from test2;
# 重置用户密码
alter  user  test2 password "GaussDB@123";
# 执行用户的锁定与解锁
alter user   test  account  lock;
alter user   test  account  unlock;
#检查系统中都有哪些用户,知道每个用户是做什么用的,删除多余用户
select  rolname from pg_roles;
# 检查系统的初始化用户是哪个
select  * from pg_roles where  rolsuper=true;
#检查createdb\createrole\operadmin权限
#拥有operadmin权限的角色可以使用roach工具执行恢复
select  rolname,createdb,createrole,operadmin from pg_roles;
#检查哪些用户拥有数据库管理员权限
selec rolname from pg_roles where rolpolicyadmin=true;
#配置用户角色的有效期
select rolname,rolvalidbegin,rolvaliduntil from og_roles where rilsuper=false;  #查询有效期
alter role <rolnama> valid begin '2020-02-02 00:00:00' valid until '2024-02-02 00:00:00';  #修改有效期
#配置用户的最大连接数
#不应该允许用户无限制数量的连接,如果用户参数rolconnlimit设置为1,表示允许无限制的数量的并发连接。
alter  role <rolname> connection limit <connection_num>; #配置
select rolname,rolconnlimit from pg_roles where rolconnlimit=-1;
 
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值