创建新用户,grant授权,角色,建表

来源:互联网 发布:java架构师成长之路 编辑:程序博客网 时间:2024/05/16 10:42

安裝完成後,有兩個系統級的用戶 : 

   1 、 system 默認密碼為 :manager 

   2 、 sys 默認密碼為 :change_on_install

在DOS下进入C盘根目录下输入

sqlplus "sys/密码 as sysdba"



   用 system 用戶創建自己的用戶、許可權 ;sql 語句如下 : 

   1 、創建用戶 : 

   create user 用户名 identified by 密码 default tablespace
users Temporary TABLESPACE Temp;

--------------------------------------------------------------------------------

其中 identify 是唯一标识,这里可以设置口令

        default 是默认表空间

        temporary是临时表空间

---------------------------------------------------------------------------------



   2 、用戶授權 

   grant connect,resource,dba to business;


   3 、提交 

   commit;

---------------------------------------------------------------------------------
修改用户密码

alter user username

identified by newpassword;

删除用户

drop user username cascade;

--------------------------------------------------------------------------------

create用户

代码
  1. SQL> create user visiontv identified by visiontv default tablespace visiontv quota 10m onusers;    
[sql] view plain copy
  1. SQL> create user visiontv identified by visiontv default tablespace visiontv quota 10m on users;  
   

grant privilege 
Sql代码
  1. SQL> grant connect,resource to visiontv;   
[sql] view plain copy
  1. SQL> grant connect,resource to visiontv;  


create tablespace 
sql 代码 

Sql代码
  1. 1. SQL> create tablespace visiontv datafile 'D:/DBServer/oracle/oradata/oradb01/vis      
  2. 2. iontv.ora' size 100m reuse default storage(initial 500k next 500k pctincrease 20      
  3. 3. );    
[sql] view plain copy
  1. 1. SQL> create tablespace visiontv datafile 'D:/DBServer/<span class="hilite1"><span style="background-color:#ffff00;">oracle</span></span>/oradata/oradb01/vis     
  2.    2. iontv.ora' size 100m reuse default storage(initial 500k next 500k pctincrease 20     
  3.    3. );  




import后就可以用了。 

// 

建立用户到用户建表的步骤: 
Server 
建立:create user 用户名 identified by "密码"; 
授权:grant create session to 用户名; 
            grant create table to 用户名; 
            grant create tablespace to 用户名; 
            grant create view to 用户名; 

Client: 
建立表空间(一般建N个存数据的表空间和一个索引空间): 
create tablespace 表空间名 
datafile ' 路径(要先建好路径)/***.dbf ' size *M 
tempfile ' 路径/***.dbf ' size *M 
autoextend on --自动增长 
--还有一些定义大小的命令,看需要 
default storage( 
initial 100K, 
next 100k, 
); 
Server: 
授予用户使用表空间的权限: 
alter user 用户名 quota unlimited on 表空间; 
或 alter user 用户名 quota *M on 表空间; 
自此,才大功告成可以随意建表,运行SQL脚本! 

//1.建表空间 

Sql代码
  1. create tablespace OSDB datafile 'F:/oracle/oradata/glsqjz/OSDB.ora' size 100m reuse defaultstorage(initial 500k next 500k pctincrease 20);  
[sql] view plain copy
  1. create tablespace OSDB datafile 'F:/<span class="hilite1"><span style="background-color:#ffff00;">oracle</span></span>/oradata/glsqjz/OSDB.ora' size 100m reuse default storage(initial 500k next 500k pctincrease 20);  

2.建用户 

Sql代码
  1. create user OSUSER identified by OSUSER  
[sql] view plain copy
  1. create user OSUSER identified by OSUSER  
;//identified by 后面的是密码,前面的是用户名 

3.用户授权 

Sql代码
  1. grant resource,connect,RECOVERY_CATALOG_OWNER to OSUSER ;   
  2.   
  3. grant create table to OSUSER ;   
  4.   
  5. alter user OSUSER quota unlimited ON OSDB;   
  6.   
  7. alter user OSUSER default tablespace OSDB;  
[sql] view plain copy
  1. grant resource,connect,RECOVERY_CATALOG_OWNER to OSUSER ;  
  2.   
  3. grant create table to OSUSER ;  
  4.   
  5. alter user OSUSER quota unlimited ON OSDB;  
  6.   
  7. alter user OSUSER default tablespace OSDB;  

4.删除表空间 

Sql代码
  1. DROP TABLESPACE TableSpaceName INCLUDING CONTENTS AND DATAFILES;  
[sql] view plain copy
  1. DROP TABLESPACE TableSpaceName INCLUDING CONTENTS AND DATAFILES;  

5.删除用户 

Sql代码
  1. DROP USER User_Name CASCADE  
[sql] view plain copy
  1. DROP USER User_Name CASCADE  


6.删除表的注意事项 

在删除一个表中的全部数据时,须使用
Sql代码
  1. TRUNCATE TABLE 表名  
[sql] view plain copy
  1. TRUNCATE TABLE 表名  
;因为用DROP TABLE,DELETE * FROM 表名时,TABLESPACE表空间该表的占用空间并未释放,反复几次DROP,DELETE操作后,该TABLESPACE上百兆的空间就被耗光了。 


=============================================================

 

oracle 创建create user 及授权grant

查看登陆的用户:

以下都可以:  
  show   user;  
  select   sys_context('userenv','session_user')   from   dual;  
  select   user   from   dual;    
 
  查看所有登录的用户必须为DBA 用户:  
  select   username   from   v$session;

sys、system等DBA 用户查看 其他用户(test)中的对象(表):
SQL> select * from test.student;


创建一个普通用户都把该用户用起来的流程:

1、创建用户 
SQL>create user test indentified by test;
这样就创建了一个用户名密码都为test的用户
但这个时候test还是不能登陆成功的,我们需要赋予相应的权限

2、赋予create session的权限
SQL>grant create session to test;
这样test用户就能成功登陆进去

但是此时用户还是不能创建表 我们需要赋予用户创建表的权限:
SQL>grant create table to test;
但是用户此时还不能创建表 因为需要有使用表空间的权限(相当于 用户有了进房间的钥匙 但是没有进大门的钥匙。。。)

所以也应该赋予相应的权限
SQL>grant unlimited tablespace to test;
这个时候用户就拥有了创建表的权限 由于表是用户test的 相应的他就拥有了对创建的表的增删查改的权限了

3、查看用户拥有什么权限可以通过查询一个系统的视图(数字字典)
SQL>select * from user_sys_privs;
这样就可以知道当前用户的权限

4、撤销权限
SQL> revoke create table from test; 

-----------------------------
一些常用视图的区分
dba_tables  dba_all_tables  user_tables  user_all_tables  all_tables  all_all_tables
当前用户所属的所有表(注意大写)
SQL> select tablespace_name,table_name from user_all_tables where table_name='STUDENT';
SQL> select table_name,tablespace_name from user_tables where table_name='STUDENT';
TABLE_NAME                     TABLESPACE_NAME
------------------------------ ------------------------------
STUDENT                        USERS

sys 要查看dba_all_tables,ALL_ALL_TABLES才能查看到 test 用户的表。
SQL> select owner,table_name,tablespace_name from dba_all_tables where owner='TEST';
SQL> select owner,table_name,tablespace_name from all_all_tables where owner='TEST';
SQL> select owner,table_name,tablespace_name from dba_tables  where owner='TEST';
SQL> select owner,table_name,tablespace_name from ALL_tables  where owner='TEST';
OWNER                          TABLE_NAME                     TABLESPACE_NAME
------------------------------ ------------------------------ ------------------------------
TEST                           STUDENT                        USERS

1.DBA_ALL_TABLES describes all object tables and relational tables in the database. Its columns are the same as those in ALL_ALL_TABLES.
2.ALL_ALL_TABLES describes the object tables and relational tables accessible to the current user.
3.USER_ALL_TABLES describes the object tables and relational tables owned by the current user. Its columns (except for OWNER) are the same as those in 
ALL_ALL_TABLES.
----------------------------------------------------------------------

情景一:
用户test 用户test1
test1的用户创建了个表mytab 并且插入了一些数据
那么 test用户是否可以访问到test1的mytab怎么访问?
答:不可以,必须先授权
test1必须授权给test :grant select on mytab to test;
那么这个时候test可以通过 select * from test1.mytab;来访问mytab中的数据
如果想把某个表(对象)的所有权限都赋予给test那么可以:
grant all on mytab to test;
撤销所有权限
revoke all on mytab from test; 



总结
对于系统权限由sys来做
对于对象权限由 谁拥有谁授权

系统权限
    grant create session to test;
    grant create table to test;
   grant unlimited tablespace to test;

   revoke create session from test;
   revoke create table from test;
   revoke unlimited tablespase from test;
   grant create session to public;  //表示把创建表的权限赋予所有人
   select * from user_sys_privs;  //返回当前用户的所有系统权限

对象权限
    grant select on mytab to test;
   grant all on mytab to test;

   revoke select on mytab from test;
   revoke all on mytab from test;

   select * from user_tab_privs;  //返回当前用户所有的对象权限
   
   对象权限可以控制到列
   grant update(name) on mytab to test;
   grant insert(id) on mytab to test;

   select * from user_col_privs;
   注意、:查询和删除不能控制到列   
    需要有commit的 insert update insert

权限的传递
  系统权限的传递:
   grant alter table to A with admin option;
  那么A可以通过把该权限传递给B,如果想B也可以传递下去那么可以也带上with admin option
   grant alter table to B;
  对象权限的传递:
   grant select on mytab to A with grant option;
  那么A可以把在表mytab的select权限赋予给B,如果B想也能传递该select权限也可以带上with grant option
   grant select on mytab to B; 
 

登陆EM 的用户必须有一下权限

创建了一个用户testem,并有如下授权
create user testem identified by testem;
grant create session,select any dictionary to testem;  // testem可以登陆EM,但是还不是em的管理员。
grant MGMT_USER to testem;

非em管理员:(在“管理”下面没有下图选项)

 
通过EM 登陆来增加 EM管理员:
名称:testem
电子邮件地址没有为此管理员定义电子邮件地址。
有权访问所有目标的超级管理员权限。
数据库系统权限: SELECT ANY DICTIONARY
数据库角色: MGMT_USER

=======================================================
oracle 新增用户,设置权限(Oracle)
每个Oracle用户都有一个名字和口令,并拥有一些由其创建的表、视图和其他资源。Oracle角色(role)就是一组权限(privilege)(或者是每个用户根据其状态和条件所需的访问类型)。用户可以给角色授予或赋予指定的权限,然后将角色赋给相应的用户。一个用户也可以直接给其他用户授权。
数据库系统权限(Database System Privilege)允许用户执行特定的命令集。例如,CREATE TABLE权限允许用户创建表,GRANT ANY PRIVILEGE 权限允许用户授予任何系统权限。
数据库对象权限(Database Object Privilege)使得用户能够对各个对象进行某些操作。例如DELETE权限允许用户删除表或视图的行,SELECT权限允许用户通过select从表、视图、序列(sequences)或快照 (snapshots)中查询信息。
一、创建用户
Oracle内部有两个建好的用户:SYSTEM和SYS。用户可直接登录到SYSTEM用户以创建其他用户,因为SYSTEM具有创建别的用户的权限。在安装Oracle时,用户或系统管理员首先可以为自己建立一个用户。例如:
create user user01 identified by u01;
(上面user01是创建的用户u01是密码)
该命令还可以用来设置其他权限,详细情况参见自学资料。要改变一个口令,可以使用alter user命令:
alter user user01 identified by usr01;
现在user01的口令已由“u01”改为“usr01”。
除了alter user命令以外,用户还可以使用password命令。如果使用password命令,用户输入的新口令将不在屏幕上显示。有dba特权的用户可以通过password命令改变任何其他用户的口令;其他用户只能改变自己的口令。
当用户输入password命令时,系统将提示用户输入旧口令和新口令,如下所示:
password
Changing password for user01
Old password:
New password:
Retype new password:
当成功地修改了口令时,用户会得到如下的反馈:
Password changed
二、删除用户
删除用户,可以使用drop user命令,如下所示:
drop user user01;
如果用户拥有对象,则不能直接删除,否则将返回一个错误值。指定关键字CASCADE,可删除用户所有的对象,然后再删除用户。下面的例子用来删除用户与其对象:
drop user user01 CASCADE;
三、3种标准角色
Qracle为了兼容以前的版本,提供了三种标准的角色(role):CONNECT、RESOURCE和DBA。
1. CONNECT Role(连接角色)
临时用户,特别是那些不需要建表的用户,通常只赋予他们CONNECTrole。CONNECT是使用Oracle的简单权限,这种权限只有在对其他用户的表有访问权时,包括select、insert、update和delete等,才会变得有意义。拥有CONNECT role的用户还能够创建表、视图、序列(sequence)、簇(cluster)、同义词(synonym )、会话(session)和与其他数据库的链(link)。
2. RESOURCE Role(资源角色)
更可靠和正式的数据库用户可以授予RESOURCE role。RESOURCE提供给用户另外的权限以创建他们自己的表、序列、过程(procedure)、触发器(trigger)、索引(index)和簇(cluster)。
3. DBA Role(数据库管理员角色)
DBA role拥有所有的系统权限----包括无限制的空间限额和给其他用户授予各种权限的能力。SYSTEM由DBA用户拥有。下面介绍一些DBA经常使用的典型权限。
(1)grant(授权)命令
下面对刚才创建的用户user01授权,命令如下:
grant connect, resource to user01;
(2)revoke(撤消)权限
已授予的权限可以撤消。例如撤消(1)中的授权,命令如下:
revoke connect, resource from user01;
一个具有DBA角色的用户可以撤消任何别的用户甚至别的DBA的CONNECT、RESOURCE 和DBA的其他权限。当然,这样是很危险的,因此,除非真正需要,DBA权限不应随便授予那些不是很重要的一般用户。
撤消一个用户的所有权限,并不意味着从Oracle中删除了这个用户,也不会破坏用户创建的任何表;只是简单禁止其对这些表的访问。其他要访问这些表的用户可以象以前那样地访问这些表。
四、创建角色
除了前面讲到的三种系统角色----CONNECT、RESOURCE和DBA,用户还可以在Oracle创建自己的role。用户创建的role可以由表或系统权限或两者的组合构成。为了创建role,用户必须具有CREATE ROLE系统权限。下面给出一个create role命令的实例:
create role STUDENT;
这条命令创建了一个名为STUDENT的role。
一旦创建了一个role,用户就可以给他授权。给role授权的grant命令的语法与对对用户的语法相同。在给role授权时,在grant命令的to子句中要使用role的名称,如下所示:
grant select on CLASS to STUDENT;
现在,拥有STUDENT角色的所有用户都具有对CLASS表的select权限。
五、删除角色
要删除角色,可以使用drop role命令,如下所示:
drop role STUDENT;
指定的role连同与之相关的权限将从数据库中全部删除。


原创粉丝点击