用SQL语句查询当前用户的所有权限

在这里非常困惑,想在这里请教大家一下:怎样使用SQL语句可以查询出当前用户的权限名。我知道用户与角色,角色与权限之间的关系都是多对多的关系,因此,在多对多的关系表中间又加... 在这里非常困惑,想在这里请教大家一下:怎样使用SQL语句可以查询出当前用户的权限名。我知道用户与角色,角色与权限之间的关系都是多对多的关系,因此,在多对多的关系表中间又加了一张表,但是我的困惑是:通过用户id可以查询出当前用户的所有role_id,但是role_id有一堆,如何通过这一堆的role_id查到每一个role_id所拥有的right_id?查出来right_id之后,又怎么查到right_id对应的每一个right_name? 展开
 我来答
仁昌爱娱乐
高粉答主

2020-01-21 · 专注关心娱乐
仁昌爱娱乐
采纳数:760 获赞数:459820

向TA提问 私信TA
展开全部

工具/材料:Management Studio。 

1、首先在桌面上,顷差点击“Management Studio”图标。 

2、继续在该界面中,点击左上角“新建查询”选项。 

3、其次雀中皮在该界面中,输入查询当前用户的所有权限的sql语句“select * from myRole left join myUser  on UserNo = '1' and myUser.RoleNo = myRole.RoleNo”。 

4、然后在该界面中,点击左上方“执行”按钮。 

5、最后在培液该界面中,显示查询当前用户的所有权限成功。

freechan10
2019-11-17 · TA获得超过2.9万个赞
知道小有建树答主
回答量:263
采纳率:68%
帮助的人:12.6万
展开全部

1、创建测试表,

create table test_user(user_id number,  role_id number);

create table test_role(role_id number,  role_name varchar2(20), right_id number);

create table test_right(right_id number,  right_name varchar2(20));

2、插入测试数铅谈余据

insert into test_user values(1,1001);

insert into test_user values(2,1001);

insert into test_user values(3,1002);

insert into test_user values(4,1002);

insert into test_role values(1001,'管理员',2001);

insert into test_role values(1001,'管理员',2002);

insert into test_role values(1002,'普通人员',2001);

insert into test_right values(2001,'查看');

insert into test_right values(2002,'修改');

3、查询三张表的总记录数侍老,

select 'USER' v, count(*)

  from test_user t

union all

select 'ROLE' v, count(*)

  from test_role t

union all

select 'RIGHT' v, count(*)

  from test_right t

4、编写sql,查询用户的角色、权限id、权限名称,

select t.user_id, t.role_id, b.right_id, c.right_name

  from test_user t, test_role b, test_right c

 where t.role_id = b.role_id

   槐滚and b.right_id = c.right_id,

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jsczwangx
推荐于2017-09-02 · TA获得超过1222个赞
知道小有建树答主
回答量:777
采纳率:100%
帮助的人:622万
展开全部

下面内容供你参考

 1.查看所有用户:
  select * from dba_users;
  select * from all_users;
  select * from user_users;

2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限):
  select * from dba_sys_privs;
  select * from user_sys_privs;
 
3.查看角色(只能查看登陆用户拥有的角色)所包含的权限
sql>select * from role_sys_privs;

4.查看用户对象权限:
  select * from dba_tab_privs;
  select * from all_tab_privs;
  select * from user_tab_privs;

5.查看所有角色:
  select * from dba_roles;

6.查看用户或角色所拥有的角色:
  select * from dba_role_privs;
  select * from user_role_privs;
 
7.查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限)
select * from V$PWFILE_USERS
 
比如我要查看用户 wzsb的拥有的权限:

SQL> select * from dba_sys_privs where grantee='WZSB';
 
GRANTEE                        PRIVILEGE                                ADMIN_OPTION
------------------------------ ---------------------------------------- ------------
WZSB                           CREATE TRIGGER        扮稿                   NO
WZSB                           UNLIMITED TABLESPACE                     NO

比如我要李野查看用户 wzsb的拥有的角色:

SQL> select * 哪缺喊from dba_role_privs where grantee='WZSB';
 
GRANTEE   GRANTED_ROLE   ADMIN_OPTION  DEFAULT_ROLE
------------------------------ ------------------------------ ------------ ------------
WZSB                           DBA                         NO              YES

查看一个用户所有的权限及角色
select privilege from dba_sys_privs where grantee='WZSB'
union
select privilege from dba_sys_privs where grantee in 
(select granted_role from dba_role_privs where grantee='WZSB' );
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式