Oracle用户创建、权限分配

 1.数据库安装时的参数设定

下面数据库所用的版本为ORACLE 9I (9.2.0),安装数据库时,数据库系统会创建一个数据库实例,其中:安装目录选为:/oracle,数据库名与数据库SID号都输入:ora9i ,其中的字符集必须选为:ZHS16GBK(否则以后进行跨平台操作时对中文的操作将比较困难)。

2.数据库用户的创建、权限的分配

数据库安装完成后,有两个系统级的用户:

1、system 默认密码为:manager

2、sys 默认密码为:change_on_install

Oracle用户创建、权限分配

在安装的数据库目录中找到/oracle/product/9.2/bin 中的sqlplus程序,运行:./sqlplus system/manager@ora9i

用system用户创建自己的用户、权限;sql语句如下:

1、创建用户:

create user username identified by pwd default tablespace users Temporary TABLESPACE Temp;

2、用户授权

grant connect,resource,dba to business;

3、提交

commit;

3.用数据库脚本创建数据库

如上面所述利用sqlplus以username 用户登陆,输入:@创建数据库的脚本名称.sql回车,即可创建数据库中的表、视图、存储过程等。 注:以上的创建用户过程可以使用户的表中没有了系统自动产生的n多临时表。

 

 

分配权限和安全案例


$ 分配用户权限

$ 去除用户权限

$ 分配角色权限

$ 去除角色权限

$ 分配表的Select权限给用户

$ 分配表的Update权限给角色

$ 分配表的Select权限给所有用户

$ 分配表的Select权限给用户,且允许他授权给其他人

$ 安全分类

$ 权限分类 
 

 

说明:用 sys 用户以 sysdba 的身份登录 SQL*Plus Worksheet ,运行下面脚本,实现分配权限。

 

$ 分配用户权限


-- 分配用户 Sam 创建表,创建序列,创建存储过程和创建视图的权限

grant create table,create sequence,create view,create procedure

to sam 
 

 

$ 去除用户权限


-- 去除用户 Sam 创建视图的权限

revoke create view from sam; 
 

 

$ 分配角色权限


-- 分配角色 manager 创建表,创建序列的权限

grant create table,create sequence to manager; 
 

 

$ 去除用户权限


-- 去除角色 manager 创建视图的权限

revoke create table from manager; 
 

 

$ 分配表的Select权限给用户


-- 分配用户 Sam 在表 tt 上的 select 权限

grant select on tt to sam;

-- 去除用户 Sam 在表 tt 上的 select 权限

revoke select on tt from sam; 
 

 

$ 分配表的Update权限给角色


-- 分配表的 Update 权限给角色 Manager

grant update on tt to manager;

-- 去除表的 Update 权限给角色 Manager

revoke update on tt from manager; 
 

 

$ 分配表的Select权限给所有用户


-- 分配表的 Select 权限给所有用户

grant select on tt to public;

-- 去除表的 Select 权限给所有用户

revoke select on tt from public; 
 

 

$ 分配表的Select权限给用户,且允许他授权给其他人


-- 分配表的 Select 权限给用户 Sam ,且允许 sam 罢表的 select 权限授权给他人

grant select on tt to sam with grant option; 
 

 

$ 安全分类

数据库安全可以被划分为两个范畴:系统安全和数据安全。系统安全在系统级别访问和使用数据库,例如,用户名和口令,分配给用户的磁盘空间和用户能够执行的系统操作;数据库安全包括访问和使用数据库对象和用户能够对数据库对象进行的操作。

 

$ 权限分类

权限是执行特殊 SQL 语句的权利。数据库管理员 (DBA) 是一个具有授予用户访问数据库及其对象的能力的高级用户。用户需要系统权限来访问数据库,需要对象权限来操纵数据库中对象的内容。用户也可以将被授予的权限给其它用户或者角色,角色是相关权限的命名分组。

 

<think>嗯,用户想在Oracle数据库创建用户分配权限。我之前看过几个相关的引用内容,应该能帮上忙。首先,用户需要创建用户,设置密码,这部分引用1和引用2都有提到,用CREATE USER语句。然后可能涉及到分配存储配额,比如ALTER USER给表空间配额,引用1里提到要注意别用SYSTEM表空间,应该用用户自己的表空间。接下来是授权,引用1和引用2都提到GRANT命令,可以授予CREATE VIEW、SELECT权限,或者角色比如DBA。不过用户需要注意安全,遵循最小权限原则,引用1特别强调了这一点,不能随便给DBA角色。 用户可能还需要分配具体的对象权限,比如允许访问某些视图,引用2中的例子是给用户授权特定的视图查询权限,用GRANT SELECT ON 视图名 TO 用户名。这时候要注意权限的范围,避免使用ANY TABLE这种太宽泛的权限,引用1里也提醒了这一点。 另外,引用3里提到了一些表操作的权限,比如ALTER TABLE,但用户的问题主要是创建用户和授权,所以可能暂时不需要这部分。不过还是要确保用户了解不同权限的作用,比如系统权限和对象权限的区别。 用户可能的疑问还有如何撤销权限,或者修改用户属性,但当前问题主要是创建和授权。需要分步骤说明,先创建用户,然后配额,再授权,最后测试。同时要注意安全事项,比如使用默认表空间而不是SYSTEM,避免过度授权。 可能用户数据库管理员,或者是刚接触Oracle的新手,需要详细的步骤和注意事项。需要把步骤写清楚,每个命令的作用,以及示例,比如用户名和密码替换成实际的。另外,安全建议也很重要,防止权限过大导致的安全风险。</think>在Oracle数据库创建用户分配权限需遵循以下步骤,结合安全性与实际需求: ### 一、创建用户 1. **基本用户创建** 使用`CREATE USER`语句定义用户名和密码,指定默认表空间: ```sql CREATE USER new_user IDENTIFIED BY "SecurePwd123" DEFAULT TABLESPACE users_data TEMPORARY TABLESPACE temp PROFILE default; ``` > 注意:避免使用`SYSTEM`表空间存储用户数据[^1] 2. **分配存储配额** 为指定表空间设置存储限制: ```sql ALTER USER new_user QUOTA 500M ON users_data; ``` ### 二、权限分配 1. **系统权限授予** ```sql GRANT CREATE SESSION, CREATE TABLE TO new_user; -- 基础权限 GRANT EXECUTE ANY PROCEDURE TO new_user; -- 特定功能权限 ``` > 避免使用`GRANT DBA TO new_user`除非必要[^1] 2. **对象权限控制** ```sql GRANT SELECT, INSERT ON hr.employees TO new_user; -- 表级权限 GRANT SELECT ON sales.v_monthly_report TO new_user; -- 视图权限[^2] ``` 3. **角色管理** ```sql CREATE ROLE data_analyst; GRANT SELECT ANY TABLE, CREATE VIEW TO data_analyst; GRANT data_analyst TO new_user; ``` ### 三、权限验证与测试 1. **查看当前权限** ```sql SELECT * FROM dba_sys_privs WHERE grantee = 'NEW_USER'; SELECT * FROM dba_tab_privs WHERE grantee = 'NEW_USER'; ``` 2. **连接测试** ```sql CONNECT new_user/SecurePwd123@orcl CREATE TABLE test_tab(id NUMBER); -- 验证CREATE TABLE权限 ``` ### 四、安全实践建议 1. 遵循最小权限原则,定期审计`DBA_SYS_PRIVS`和`DBA_TAB_PRIVS` 2. 敏感操作权限(如`ALTER DATABASE`)需单独审批 3. 使用`REVOKE`撤销多余权限: ```sql REVOKE DELETE ON hr.salaries FROM new_user; ``` ### 五、典型错误规避 1. **避免过度授权** ```sql -- 错误示范(开放所有表查询权限) GRANT SELECT ANY TABLE TO new_user; -- 正确做法(按需授权) GRANT SELECT ON specific_table TO new_user; ``` 2. **表空间管理** ```sql -- 错误示范(使用系统表空间) ALTER USER new_user QUOTA UNLIMITED ON SYSTEM; -- 正确做法(使用专用表空间) ALTER USER new_user QUOTA 2G ON user_data_ts; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值