赋予oracle数据库中某一用户表权限的问题

赋予oracle数据库中某一用户表权限的问题,第1张

开通其中2张表的查询权限,方法如下:

grant select on bas_checkcycle to jdc这个是整个语句。

语句分析:

grant select on bas_checkcycle to jdc;

这个颜色为执行语句。

这个颜色是数据表。

这个颜色是用户;就是需要权限的用户。

下面这个是查看,更新,删除,增加的权限都开启。

grant select,update,delete,insert on UserTagPool to [app_webservice]

grant select,update,delete,insert on UserTagPoolMap to [app_webservice]

扩展资料

Oracle权限管理

权限分类:

系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。

实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。

系统权限分类:

DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。

RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。

CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。

因为之前root安全设置问题,把root的select_priv, update_priv, insert_priv, delete_priv权限都给下掉了。

现在要grant 修改非root用户权限的时候发现修改不了,才发现是root权限的问题。

修改mysql配置文件

mysqld新增skip-grant-tables,wq保存退出

重启mysql服务

进入mysql

查看mysql用户表信息,发现root没有CURD的权限

发现问题直接update,修改它,如果其它权限没了,也可以修改

修改my.cnf,注释掉skip-grant-tables

重启mysql服务

登录root账号,就可以用了

其实和服务器的修改方法一样

查看my.cnf挂载情况,如果已经知道了my.cnf的挂载位置,就不用执行这一步。

找到my.cnf配置文件,这边的挂载到宿主机的配置在/opt/mysql/config/my.cnf

注意 5d15960f2861 是我自己的 CONTAINER ID

如果my.cnf没有挂载出来,那就进容器里面改my.cnf了,注意 5d15960f2861 是我自己的 CONTAINER ID

my.cnf 中的mysqld新增skip-grant-tables,wq保存退出

重启docker mysql服务

进入docker mysql容器的mysql服务

查看mysql用户表信息,发现root没有CURD的权限

发现问题直接update,修改它,如果其它权限没了,也可以修改

修改my.cnf,注释掉skip-grant-tables

重启docker mysql服务

登录root账号,就可以用了

网上资料说权限设计 = 功能权限 + 数据权限,我认为还是很有道理的。之前项目中只涉及到功能权限,没有数据权限,原因是最开始设计时,数据已经绑定在特定的用户下了,而且涉及到的表数量很少,不需要单独考虑数据权限的问题。

权限管理,最细致的权限管理有 用户,用户组,角色,权限,功能。根据不同的需求适当选择,如 用户量过大,每个人都授权和麻烦,就引入用户组,对用户组赋予权限。功能上也根据业务不同做适当的扩展。由于如用户权限之前存在多对多关系,需要引入中间表。

本系统设计如下:

数据量很小,功能也不复杂,所以只有用户,角色,权限(功能)及产生的中间表。

表中的数据都是提前填的,用户登陆,查ermroleuser表,获取角色,查ermrolefunction表,获取功能,再查ermfunction表,返回该用户的功能的中文,在页面上展示。

功能权限详细设计请参考,本项目也是受此启发:

http://blog.csdn.net/painsonline/article/details/7183613/

需求:给一个原来没有权限的数据配置系统加上登录,权限功能,不同角色查同一张表返回结果不同。

思路:所谓数据权限,关注点在于实体属性值、条件、允许值,用户登录后,查询该用户的查询条件,根据条件获取数据即可。详细表结构设计可以参考: https://zhuanlan.zhihu.com/p/31339794

具体介绍一下每个字段含义:

(1)主键 id;

(2)acl_id 映射权限点表主键,代表每行记录是针对哪个权限点的;

(3)status 代表当前这条配置是否有效,方便临时激活与禁用;

(4)param 代表需要校验的参数名,允许一个请求有多个参数参与数据校验;如果参数复杂,比如包含对象,定义的参数可能为a.b.c 这种多级的形式,建议不要太复杂

(5)operation 代表数据拦截的规则,使用数字代表是等于、大于、小于、大于等于、小于等于、包含、介于之间等,可以根据自己需要增加或减少支持的拦截规则

(6)value1 和 value2 用来和param、operation组成一个关系表达式,比如:1<=a<2

next_param_op 字段根据需要使用,如果一个权限点支持多条数据规则时,连接两个规则之间的 *** 作,|| 还是 &&

(7)seq 字段用于某个权限点包含多条数据权限规则时的顺序

假设有这么一条数据,那么他的含义是:id为1(acl_id)的权限点,配置了一条有效(status=1)的数据规则,规则是:传入参数id(param)的值要大于(operation)10(value1)

这种设计很细致了,当然我的项目没有那么复杂,所以最终没有采用这个。

http://www.cnblogs.com/jeffwoot/archive/2008/12/23/1359591.html 讲述了数据权限设计的演化过程。

本系统跟权限相关的表结构如下:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9611296.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存