ORACLE建立用户与权限|数据库|码途山海.智隐长卷 -

程序人生|重庆纽新

找回密码
立即注册

QQ登录

只需一步,快速开始

欢迎访问【程序人生-重庆纽新】,本网站为软件开发人员视觉的IT资讯、软件开发中各种问题的解决办法!!
搜索
发新帖


2308

积分

0

好友

259

主题
楼主
发表于 2019-5-8 22:34:22 | 查看: 3019| 回复: 0
一、建立用户

Oracle安装完后,其中有一个缺省的数据库,除了这个缺省的数据库外,我们还可以创建自己的数据库。

    对于初学者来说,为了避免麻烦,可以用'Database Configuration Assistant'向导来创建数据库。

创建完数据库后,并不能立即在数据库中建表,必须先创建该数据库的用户,并且为该用户指定表空间。

关系:一个大的数据中分为几个表空间,创建几个用户然后指定对应的表空间并授权,这样用户就独立操作自己的资源了,每每用户登录进入后,在自己的表空间中新建表啊等等对象,互不干扰。

    下面是创建数据库用户的具体过程:


1.假如现在已经建好名为'NewDB'的数据库

此时在D:appAdministratororadata目录下已经存在NewDB目录(注意:我的Oracle11g安装在D盘下,若你的Oracle安装在别的目录,那么你新建的数据库目录就在*:appAdministratororadata目录下)。


2.创建用户之前要创建"临时表空间",若不创建则默认的临时表空间为temp。

SQL> CREATE TEMPORARY TABLESPACE DB_TEMP

         TEMPFILE 'D:appAdministratororadataNewDBDB_TEMP.DBF'

         SIZE 32M

         AUTOEXTEND ON

         NEXT 32M MASIZE UNLIMITED

         EXTENT MANAGEMENT LOCAL;


3.创建用户之前先要创建数据表空间,若没有创建则默认永久性表空间是system。

SQL> CREATE TABLESPACE DB_DATA

         LOGGING

         DATAFILE 'D:appAdministratororadataNewDBDB_DATA.DBF'

         SIZE 32M

         AUTOEXTEND ON

         NEXT 32M MAXSIZE UNLIMITED

         EXTENT MANAGEMENT LOCAL;

其中'DB_DATA'和'DB_TEMP'是你自定义的数据表空间名称和临时表空间名称,可以任意取名;'D:appAdministratororadataNewDBDB_DATA.DBF'是数据文件的存放位置,'DB_DATA.DBF'文件名也是任意取;'size 32M'是指定该数据文件的大小,也就是表空间的大小。


4.现在建好了名为'DB_DATA'的表空间,下面就可以创建用户了:

SQL> CREATE USER NEWUSER IDENTIFIED BY BD123

         ACCOUNT UNLOCK

         DEFAULT TABLESPACE DB_DATA

         TEMPORARY TABLESPACE DB_TEMP;

默认表空间'DEFAULT TABLESPACE'使用上面创建的表空间名:DB_DATA。

临时表空间'TEMPORARY TABLESPACE'使用上面创建的临时表空间名B_TEMP。


5.接着授权给新建的用户:

SQL> GRANT CONNECT,RESOURCE TO NEWUSER;  --表示把 connect,resource权限授予news用户

SQL> GRANT DBA TO NEWUSER;  --表示把 dba权限授予给NEWUSER用户

    授权成功。

    OK! 数据库用户创建完成,现在你就可以使用该用户创建数据表了!


总结:创建用户一般分四步:

第一步:创建临时表空间

第二步:创建数据表空间

第三步:创建用户并制定表空间

第四步:给用户授予权限



二、给数据库用户授权(对象为用户表)
GRANT privilege[, ...] ON object[, ...] TO { PUBLIC | GROUP group| username}

privilege:
        select:查询
        insert:插入
        update:更新
        delete:删除
        rule:
        all:所有

grant select,insert,update on tablename to public;
给所有用户授予查询、插入、更新tablename表的权限
revoke select,insert,update on tablename from public;//收回所有用户查询、插入、更新tablename表的权限

object:
        table:表
        view:视图
        sequence:序列
        index:索引

grant select,insert,update on tablename,viewname,sequencename,indexname to public;

public:对所有用户开放权限
GROUP groupname:对该组所有用户开放权限
username:对指定用户开放权限

2、给数据库用户授权(对象多为系统表,如dba可以查看的表)

grant dba to username;
不给用户授予dba权限,用户将无法查看系统表,例如v$datafile,dba_data_files等
revoke dba from username;//对用户username回收dba权限
注:如果使用pl/sql登录,授予dba权限后,需要重新登陆(初始理解,错误)
后经验证,不需要重新登陆,只需要重新打开一个会话就可以
理解:数据库的所有权限操作,都是以会话为单位,如果当前会话执行时没有dba权限,即便是已经重新赋予了权限,在当前会话中也是不起作用的
而如果当前会话有dba权限,而后台取消了权限,那么当前会话的dba权限也不会消失

grant connect to username;
不给新建用户授予connect权限,新建用户无法通过SID或SERVICE_NAME连接数据库实例,即无法登录数据库
revoke connect to username;//对用户username回收connect权限

grant resource to username with admin option;
grant unlimited tablespace to username with admin option;
不给新建用户授予resource权限,新建用户无法创建表
revoke resource from username;//对用户回收resource权限

3、查看指定用户有哪些系统权限
select * from dba_role_privs where grantee=upper('username');

4、查看指定用户有哪些对象权限
select * from dba_tab_privs where grantee=upper('username');


可能遇到问题:
1、当在一个新建数据库用户上创建表失败时,可以查看系统权限
        在当前用户执行select * from dba_role_privs where grantee=upper('username');如果不能执行(提示表或视图不存在),说明没有dba权限
        解决方法:可以登录sys账户赋予dba权限
        登录sys:sqlplus / as sysdba
        给username赋权限:grant dba to username;

        也可以直接登录sys账户,select * from dba_role_privs where grantee=upper('username'),如果granted_role的值没有dba,说明没有dba权限


权限相关的查询和赋予:
所有权限的赋予均是在有赋予权限的用户下进行,此处授权用户都是sys用户
1、select * from dba_role_privs where grantee=upper('luyongpeng');
其中,admin_option是通过在授权时添加with admin option 选项定义
grant dba to luyongpeng with admin option;//admin_option为YES,如果不加with admin option 选项,则admin_option为NO
使用grant dba to luyongpeng;无法覆盖之前的权限
但grant dba to luyongpeng with admin option 可以覆盖grant dba to luyongpeng;的权限

收藏回复 只看该作者 道具 举报

高级模式
B Color Image Link Quote Code Smilies



QQ|小黑屋| 码途山海.智隐长卷 渝ICP备15002301号-2   渝公网安备50011202504426

GMT+8, 2025-5-18 00:47 , Processed in 0.044541 second(s), 23 queries .

©Copyright 程序人生!

©2012-2015重庆纽新

快速回复 返回顶部 返回列表