背景:现有一个用户,需添加一个用户
- 创建用户
- 使用新用户登录
出现报错信息:ora-01045 :user system lacks create session privilege; logon denied
使用系统用户登录后,用如下sql语句给出错用户赋权限
grant create session to UserName;(UserName是登录出错的用户名)
- 为新用户建表
相互赋值权限用法:
两个用户:user1
和 user2
,都是在库 TEST
上,分别有表 user1.table1
,user2.table2
但是用 user1
登录的时候,user2
上表就不能用,此时就可以使用grant命令
GRANT privilege [, ...] ON object [, ...] TO { PUBLIC | GROUP group | username }
举例:
- 不同用户下表的赋权
user1
用户操作user2
用户的table2
表
grant insert,update,delete on user2.表名 to user1;
grant insert,update,delete on user2.table2 to user1;
//在user1下,select * from user2.table2
- 不同用户下序列的赋权
grant select , alter on user2.序列名 to user1;
grant select , alter on user2.seq_table2 to user1;
- 不同用户下的函数赋权
grant execute on 函数名 to 其它用户
grant execute on AHSIMIS_QUERY.wsbs_pk_date_validate to ahsicp3
- 不通用户下包的赋权
grant execute on 包名 to 其他用户;
grant execute on ahsimis_query.pkg_pan_公众服务平台接口 to ahsicp3
进阶:不同库
命令格式
grant 权限 on 数据库名.表名 to 用户名@登陆方式 identified by 'password1';
回收授于用户的权限
命令格式
revoke 权限 on 数据库名.表名 from 用户名@登陆方式;
查看权限:
Oracle中数据字典视图分为3大类,用前缀区别,分别为:USER,ALL 和 DBA,许多数据字典视图包含相似的信息。
USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息
ALL_*:有关用户可以访问的对象的信息,即用户自己创建的对象的信息加上其他用户创建的对象但该用户有权访问的信息
DBA_*:有关整个数据库中对象的信息
(这里的*可以为TABLES,INDEXES,OBJECTS,USERS等。)
- 查看所有用户
select * from dba_user;
select * from all_users;
select * from user_users;
- 查看用户系统权限
select * from dba_sys_privs;
select * from all_sys_privs;
select * from user_sys_privs;
- 查看用户对象权限
select * from dba_tab_privs;
select * from all_tab_privs;
select * from user_tab_privs;
- 查看所有角色
select * from dba_roles;
- 查看用户所拥有的角色
select * from dba_role_privs;
select * from user_role_privs;
- 查看当前用户的缺省表空间
select username,default_tablespace from user_users;
- 查看某个角色的具体权限
grant connect,resource,create session,create view to TEST;
- 查看RESOURCE具有那些权限,
select * from DBA_SYS_PRIVS where grantee='RESOURCE';