首页 > 代码库 > Oracle 根据业务创建新的用户
Oracle 根据业务创建新的用户
新的需求,创建一个用户,可以查询基表的数据,但是不能修改,同时自己也可以创建对象
1.创建用户
第一种方式 详细常见,前提 表空间和临时表空间必须存在
格式:
create user 用户名 identified by 密码
profile default
default tablespace 表空间名(一般就是users)
temporary tablespace 临时表空间名(各不相同)
account unlock;
例子:
SQL> create user sun identified by xxxx
2 profile default
3 default tablespace users
4 temporary tablespace tempts01
5 account unlock;
第二种方式 默认创建(系统爱建哪建哪)
格式:
create user 用户名 identified by 密码;
例子:
SQL> create user sun identified by xxxx;
用户已创建。
2.授权
创建好了之后直接登陆报错,因为没有权限
例子:
SQL> conn sun/xxxx
ERROR:
ORA-01045: user SUN lacks CREATE SESSION privilege; logon denied
连接sys用户,授权
SQL> conn / as sysdba
已连接。
说明connect,resource是基础权限
SQL> grant connect,resource to sun;
授权成功。
再次链接,成功,并查询用户拥有权限
SQL> conn sun/xxxx
已连接。
SQL> select * from user_role_privs;
USERNAME GRANTED_ROLE ADMIN_ DEFAUL OS_GRA
------------------------------------------------------------ ------------------------------------------------------------ ------ ------ ------
SUN CONNECT NO YES NO
SUN RESOURCE NO YES NO
3.实现业务需要,基础数据不变,但各自产生的数据再各自的表中
sun用户为新用户
scott用下面的表为基础表,可查询,不能修改
业务一:查看基表数据
SQL> conn scott/xxxx
已连接。
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------------------------------------
DEPT
EMP
BONUS
SALGRADE
TEST
将scott下的dept表的查询权限授予sun,实现可以查询基础表数据的功能
SQL> conn / as sysdba
已连接。
SQL> grant select on scott.dept to sun;
授权成功。
测试一下
SQL> conn sun/xxxx
已连接。
SQL> select * from dept;
select * from dept
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
这个错误是因为没有指定用户名,默认是在自己的用户下查找
再次查找,成功,帅气!
SQL> select * from scott.dept;
DEPTNO DNAME LOC
---------- ---------------------------- --------------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
查找其他的表,不成功,因为没有授权
SQL> select * from scott.emp;
select * from scott.emp
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
我们查询一下sun用户的权限
SQL> select * from user_tab_privs;
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRANTA HIERAR
---------- -------- ------------- ---------- ----------- --------- --------
SUN SCOTT DEPT SCOTT SELECT NO NO
业务二:用户自己可以创建对象
授权:
grant create any produce to 用户名;
grant create any sequence to 用户名;
grant create any view to 用户名;
grant create any synonym to 用户名;
Oracle 根据业务创建新的用户