首页 > 数据库 >openGauss学习笔记-108 openGauss 数据库管理-管理用户及权限-用户

openGauss学习笔记-108 openGauss 数据库管理-管理用户及权限-用户

时间:2023-10-24 22:00:45浏览次数:34  
标签:数据库 用户 108 user openGauss CREATE USER

openGauss学习笔记-108 openGauss 数据库管理-管理用户及权限-用户

使用CREATE USER和ALTER USER可以创建和管理数据库用户。openGauss包含一个或多个已命名数据库。用户和角色在整个openGauss范围内是共享的,但是其数据并不共享。即用户可以连接任何数据库,但当连接成功后,任何用户都只能访问连接请求里声明的那个数据库。

三权分立下,openGauss用户帐户只能由系统管理员或拥有CREATEROLE属性的安全管理员创建和删除。三权分立时,用户帐户只能由初始用户和安全管理员创建。

在用户登录openGauss时会对其进行身份验证。用户可以拥有数据库和数据库对象(例如表),并且可以向用户和角色授予对这些对象的权限以控制谁可以访问哪个对象。除系统管理员外,具有CREATEDB属性的用户可以创建数据库并授予对这些数据库的权限。

108.1 创建、修改和删除用户

  • 要创建用户,请使用SQL语句CREATE USER。

    例如:创建用户joe,并设置用户拥有CREATEDB属性。

    openGauss=# CREATE USER joe WITH CREATEDB PASSWORD "xxxxxxxxx";
    CREATE ROLE
    
  • 要创建系统管理员,请使用带有SYSADMIN选项的CREATE USER语句 。

  • 要删除现有用户,请使用DROP USER。

  • 要更改用户帐户(例如,重命名用户或更改密码),请使用ALTER USER。

  • 要查看用户列表,请查询视图PG_USER:

    SELECT * FROM pg_user; 
    
  • 要查看用户属性,请查询系统表PG_AUTHID:

    SELECT * FROM pg_authid; 
    

108.2 私有用户

对于有多个业务部门,各部门间使用不同的数据库用户进行业务操作,同时有一个同级的数据库维护部门使用数据库管理员进行维护操作的场景下,业务部门可能希望在未经授权的情况下,管理员用户只能对各部门的数据进行控制操作(DROP、ALTER、TRUNCATE),但是不能进行访问操作(INSERT、DELETE、UPDATE、SELECT、COPY)。即针对管理员用户,表对象的控制权和访问权要能够分离,提高普通用户数据安全性。

三权分立情况下,管理员对其他用户放在属于各自模式下的表无权限。但是,这种无权限包含了无控制权限,因此不能满足上面的诉求。为此,openGauss提供了私有用户方案。即在非三权分立模式下,创建具有INDEPENDENT属性的私有用户。

CREATE USER user_independent WITH INDEPENDENT IDENTIFIED BY "XXXXXXXX";

针对该用户的对象,系统管理员和拥有CREATEROLE属性的安全管理员在未经其授权前,只能进行控制操作(DROP、ALTER、TRUNCATE),无权进行INSERT、DELETE、SELECT、UPDATE、COPY、GRANT、REVOKE、ALTER OWNER操作。

img 须知:

  • PG_STATISTIC系统表和PG_STATISTIC_EXT系统表存储了统计对象的一些敏感信息,如高频值MCV。进行三权分立后系统管理员仍可以通过访问这两张系统表,得到统计信息里的这些信息。
  • 在某些特殊场景下,系统无法保证私有用户数据对初始用户或系统管理员绝对不可见。例如,初始用户或系统管理员通过解析本地数据文件或通过构造特殊函数或操作符被私有用户调用等方式,可能会获取私有用户数据。私有用户如果希望进一步提升数据的安全性,建议对数据进行加密保护。

108.3 永久用户

openGauss提供永久用户方案,即创建具有PERSISTENCE属性的永久用户。

CREATE USER user_persistence WITH persistence IDENTIFIED BY "XXXXXXXX";

只允许初始用户创建、修改和删除具有PERSISTENCE属性的永久用户。

108.4 用户认证优先规则

对于GUC参数b_compatibility_user_host_auth打开的b数据库,如果用户连接,需要有优先匹配的规则,如下。

  • 含有具体的IP地址的用户优先级最高,比如[email protected]
  • 含有'%'的user_name,按照%的出现顺序决定优先级,%越靠后优先级越高,比如user_name@127.%优先级高于user_name@127%。
  • 只含有user_name。比如user_name的优先级低于user_name@127%。
  • 只含有'%'优先级最低。可匹配所有用户

具体创建的用户名称详情见CREATE USER语句。

标签:数据库,用户,108,user,openGauss,CREATE,USER
From: https://blog.51cto.com/shuchaoyang/8010617

相关文章

  • LeetCode 1089. 复写零
    复写零题目链接1089.复写零给你一个长度固定的整数数组arr,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。注意:请不要在超过该数组长度的位置写入元素。请对输入的数组就地进行上述修改,不要从函数返回任何东西。示例1:输入:arr=[1,0,2,3,0,4,5,0]输......
  • 连锁餐饮品牌如何落地 CJO 理念,实现精细化用户运营
    移动互联网时代的流量红利已经消失,企业亟需在数字化转型时代抓住触点红利,基于客户旅程编排(CustomerJourneyOrchestration,简称CJO)为用户提供个性化、全渠道一致的体验。在此背景下,连锁餐饮品牌已经将「落地CJO理念、提升用户全生命周期交互体验管理」作为新的增长点,并全力推进......
  • API用户行为分析监测
    一、认证鉴权技术基于Session-Cookie认证相信大家对Session-Cookie认证并不陌生,它是一种利用服务端的Session(会话)和浏览器(客户端)的Cookie来实现的前后端通信认证模式,长期以来一直处于主流地位。由于HTTP是无状态的,借助Cookie,客户端登陆成功后,服务端能识别出其后续请求,无需......
  • 基于mutation的自定义指令以监听用户使用f12修改dom
    昨天写了功能后,就又封了一个指令,可以直接应用于ui框架的input组件上贴贴:preventChange/index.jsexportconstpreventChange={inserted(el,binding){constelTag=el.tagName.toLowerCase();//获取当前dom下类型为password的input标签constpasswordI......
  • odoo 加用户
     加用户definsert(self,info):a=self.env['hr.department'].create({'name':info['orgcode_show']})b=self.env['hr.employee'].create({'name':info['USERNAME'],......
  • 精雕细刻:通过监控易提升IT运维的用户体验
    一、用户体验在IT运维中的核心地位  在当前的数字化时代,用户体验已不仅仅局限于产品或服务的使用感受,它深入到每一个业务运营和技术运维的细节之中。尤其在IT运维领域,优秀的用户体验是保障业务连续性、减少运维风险、提升团队工作效率的关键。在这里,我们不仅要关注最终用户的体......
  • openGauss学习笔记-107 openGauss 数据库管理-管理用户及权限-三权分立
    openGauss学习笔记-107openGauss数据库管理-管理用户及权限-三权分立默认权限机制和管理员两节的描述基于的是openGauss创建之初的默认情况。从前面的介绍可以看出,默认情况下拥有SYSADMIN属性的系统管理员,具备系统最高权限。在实际业务管理中,为了避免系统管理员拥有过度集中的......
  • 【守于拙璞,志在光华】璞华科技帮助用户实现数智化的“初心”
    拙璞,一种道法自然、诚恳质朴的态度,有一些憨厚,有一些可爱。光华,一个振兴产业、求索成长的志向,闪耀着使命,闪耀着担当。有一群人,将“守于拙璞,志在光华”奉为初心,扎根苏州、武汉、北京,走向东京,开启了一场静悄悄的科技发展之路。璞华科技,是一家以长期主义精耕业务、基于行业最佳实......
  • 支持多用户协作的API测试工具:Apipost
    在当今快速发展的数字化时代,API已成为企业与开发者实现数据互通、应用集成的重要桥梁。然而,随着API数量的不断增加,API开发、调试、测试、文档等工作也变得越来越复杂。为了解决这一痛点,一款名为Apipost的API协同研发工具应运而生。成功案例许多知名的公司和团队都在使用Apipost......
  • 4.6-用户行为
    In[]:importpandasaspddata=pd.read_csv("WA_Fn-UseC_-Telco-Customer-Churn.csv")data.columns=['用户ID','性别','是否老人','是否有伴侣','是否有孩子','合同期限','通话服务',�......