Oracle创建表用户
一、创建用户
oracle内部有两个建好的用户:system和sys。用户可直接登录到system用户以创建其他用户,因为system具有创建别 的用户的 权限。
语法[创建用户]: create user 用户名 identified by 口令[即密码];
例子: create user test identified by test;
二、角色介绍
oracle为兼容以前版本,提供三种标准角色(role):connect/resource和dba.
- connect role(连接角色)
–临时用户,特指不需要建表的用户,通常只赋予他们connect role.
–connect是使用oracle简单权限,这种权限只对其他用户的表有访问权限,包括select/insert/update和delete等。
–拥有connect role 的用户还能够创建表、视图、序列(sequence)、簇(cluster)、同义词(synonym)、回话(session)和其他 数据的链(link) - resource role(资源角色)
–更可靠和正式的数据库用户可以授予resource role。
–resource提供给用户另外的权限以创建他们自己的表、序列、过程(procedure)、触发器(trigger)、索引(index)和簇(cluster)。 - dba role(数据库管理员角色)
–dba role拥有所有的系统权限
–包括无限制的空间限额和给其他用户授予各种权限的能力。system由dba用户拥有
三、具体操作如下
1.Windows用户打开cmd到sqlplus.exe所在目录下,然后执行sqlplus /nolog,linux用户在终端中输入su - oracle,然后输入密码,再执行sqlplus /nolog。
1.用具有DBA权限的用户登录数据库(可用sys或system用户创建),
conn /as sysdba
2.创建用户名是user1,密码是password1的用户
create user user1 identified by password1
3.赋予连接、资源的权限
grant connect to user1
4.如果是授予该用户拥有查看几张表的权限,首先要先了解这几张表分别属于那个用户,属于那个表空间。
查看oracle下面所有的表空间,使用命令select * from Dba_Tablespaces。
查询某个表属于哪个用户
select owner from dba_tables where table_name=upper(‘表名’);
4.赋予表空间为A的TABLE1和TABLE2两张表的查询权限给user1
grant select on A.TAB LE1 to user1
grant select on A.TABLE2 to user1
5.测试用user1用户登录后,其他表没有查询权限,并且TABLE1和TABLE2只能查询,不具有其他权限。
四、扩展
1.授予用户创建同义词权限grant create synonym to user1;(建议可以设置)
引入同义词的原因在一些商业数据库中,有时信息系统的设计或开发者为了增加易读性,故意定义一些很长的表名(也可能是其它的对象)。这样虽然增加了易读性,但在引用这些表或对象时就不那么方便,也容易产生输入错误。另外在实际的商业公司里,一些用户觉得某一个对象名有意义也很好记,但另一些用户可能觉得另一个名字更有意义。oracle系统提供的同义词(synonym)就是用来解决那个以上的难题的。设想一下在您的日常工作中您每天都要使用supplier表许多次,在这种情况下,您就可以借助于同义词(synonym)来帮助您提高生产力。
怎样创建同义词(synonym):create synonym 同义词 from 表名
例:create synonym s from supplier;
2.将其他表用户创建的所有表授予user1用户查询的权限,并将结果查询出来展示。
grant select on ‘||owner||’.’||object_name||’ to user1;
select ‘grant select on ‘||owner||’.’||object_name||’ to user1;’ from dba_objects where owner in (‘SYS’) and object_type=‘TABLE’;
两句授权语句区别:
grant select on ‘||owner||’.’||object_name||’ to user1;授予user1所有用户现在所有表的查看权限。
grant select any table to use1;授予所有表的查看权限给user1。
两句授权语句的区别在于权限的控制,第一句授权语句好控制权限,第二条语句不好控制权限,原因是,第一句授权语句只是授权所有用户现在所有表的查看权限,也就是说如果在授权完成后,其他用户在授权之后再创建表,user1是没有查看新建表的权限的,第二条语句是将所有表的产看权限都授予user1,权限较大,不管是其他用户再次新建表,依然还是会被user1看到,不建议使用第二句授权语句进行授权,不好控制权限。
3.select ‘create or replace synonym reader.’||object_name||’ for ‘||owner||’.’||object_name||’;’ from dba_objects where owner in (‘SYS’) and object_type=‘TABLE’;