1、用户类型
登录时可以选择的三种账户类型:sysdba,sysoper,normal 。
| 账户 | 描述 | 功能 |
| sysdba | 数据库管理员 | 打开数据库服务器,关闭数据库服务器,备份数据库,恢复数据库,日志归档,会话限制,管理功能,创建数据库 |
| sysoper | 数据库操作员 | 打开数据库服务器,关闭数据库服务器, 备份数据库,恢复数据库,日志归档,会话限制 |
| normal | 普通用户 | 任何权限(只有通过被授权之后才可以对数据库进行操作) |
2、默认账户
|
用户名 |
密码 |
类型 |
描述 |
|
sys |
安装时设置 |
sysdba, sysoper |
级别最高的账户 |
|
sysdba |
安装时设置 |
sysdba |
级别最高的账户 |
|
system |
安装时设置 |
normal |
虽然是普通用户,但拥有dba角色 |
3、创建账户
3.1创建用户
|
sql格式: CREATE USER 用户名 IDENTIFIED BY 密码; 例如:CREATE USER nowashing IDENTIFIED BY yujinxiang; 创建了一个用户,用户名是nowashing密码是yujinxiang。 |
3.2修改任意用户密码
|
sql格式: ALTER USER 用户名 IDENTIFIED BY 密码; 例如:ALERT USER scott IDENTIFIED BY tiger; 将scott的密码修改为tiger。 |
3.3修改当前用户的密码
|
sql格式: ALTER USER 用户名 IDENTIFIED BY 新密码 REPLACE 旧密码; |
3.4删除用户
|
sql格式: DROP USER 用户名(CASCADE级联删除拥有对象) 例如:DROP USER nowashing; 删除掉nowashing这个用户,以及这个用户所拥有的所有的数据对象(权限,表,视图,存储过程……)。 |
3.5查询所有用户
|
SELECT * FROM all_users; |
4、授权
4.1授权
|
sql格式: GRANT 权限/角色列表 TO 用户名 [WITH ADMIN OPTION]; 例如1: GRANT dba TO nowashing; 授权dba角色给nowashing这个用户。 后续篇章将权限,角色统称为权限。 例如2: 权限或角色有多项用逗号分隔: GRANT connect,resource,dba TO nowashing; 例如3: 被授权用户拥有此权限后是否可以再将此权限授予别人: GRANT dba TO nowashing WITH ADMIN OPTION; 不加WITH ADMIN OPTION是不允许授予别人的。 例如4: 将某授权授予给所有用户: GRANT 权限 TO PUBLIC; |
4.2撤销授权
|
sql格式: REVOKE 权限/角色列表 FROM 用户 例如:REVOKE dba TO nowashing; 收回(撤消)dba角色从nowashing这个用户。 权限或角色有多项用逗号分隔: REVOKE connect,resource,dba TO nowashing |
4.3查询已拥有的权限
|
SELECT * FROM dba_sys_privs; --查询所有用户和角色被授予的系统权限 SELECT * FROM user_sys_privs; --查询当前登录用户被授予的系统权限 SELECT * FROM user_role_privs—查询当前登录用户拥有的角色 |
4.4常见系统权限
系统权限: 允许用户执行特定的数据库动作,如创建表、创建索引、连接实例等。
对象权限: 允许用户操纵一些特定的对象,如读取视图,可更新某些列、执行存储过程等。
Oracle的系统权限有206种(SELECT * FROM system_privilege_map),以下仅列出常用的一些:
|
权限名称 |
描述 |
|
create session |
连接到数据库 |
|
create sequence |
创建序列 |
|
create synonym |
创建同义词 |
|
create public synonym |
创建公用的同义词 |
|
create table |
创建表 |
|
create any table |
在任何模式中创建表 |
|
drop table |
删除表 |
|
drop any table |
删除任何模式中的表 |
|
create procedure |
创建存储过程 |
|
execute any procedure |
运行任务模式中的存储过程 |
|
create user |
创建用户 |
|
alter user |
修改用户 |
|
drop user |
删除用户 |
|
create view |
创建视图 |
模式(schema):是某个用户拥有所有对象的集合。
4.5常见的系统角色
|
角色名称 |
拥有权限 |
|
dba |
所有权限 |
|
connect |
create session 连接到数据库 alter session --修改会话 create cluster --建立聚簇 |
|
resource |
create trigger--建立触发器 create sequence --建立序列 create procedure --建立存储过程 create cluster --建立聚簇 create operator --建立操作员 create index --建立索引 create indextype --建立索引类型 create table --建立表 |
4.6对象权限
所谓的对象指的是:表,视图,索引,同义词,存储过程,触发器,序列……
- 不同的对象具有不同的对象权限
- 对象的拥有者拥有所有权限
- 对象的拥有者可以向外分配权限
|
对象权限 |
表 |
视图 |
序列 |
过程 |
|
查询(select) |
√ |
√ |
√ | |
|
插入(insert) |
√ |
√ | ||
|
更新(update) |
√ |
√ | ||
|
删除(delete) |
√ |
√ | ||
|
修改(alter) |
√ |
√ | ||
|
索引(index) |
√ | |||
|
关联(references) |
√ | |||
|
执行(execute) |
√ |
4.6.1授予权限
|
sql格式: GRANT 权限列表 ON 对象名 TO 用户名 [WITH GRANT OPTION] 例1,授予郁金香这个用户,向学生表查询,插值,修改,删除的权限: GRANT select ,insert,update,delete,execute ON t_student TO yujinxiang; 例2,向数据库中所有用户分配权限: GRANT select ON dept TO PUBLIC; |
4.6.2授予部分字段权限
|
sql格式: GRANT 权限名称 (字段列表) ON 对象名 TO 用户名 [WITH GRANT OPTION] 例如,授予郁金香这个用户,修改学生表的学生姓名,学生年龄的权限: GRANT update (stu_name,student_age) ON t_student TO yujinxiang; |
4.6.3查询已拥有权限
|
sql格式: SELECT * FROM user_tab_privs_made --查询授出去的对象权限(通常是属主自己查) SELECT * FROM user_tab_privs_recd,SELECT * FROM user_tab_privs --查询当前用户拥有的对象权限 |
4.6.4撤销权限
|
sql格式: REVOKE 权限列表 ON 对象名 FROM 用户名; 例1,撤消授予郁金香这个用户,向学生表查询,插值,修改,删除的权限: REVOKE select ,insert,update,delete,execute ON t_student FROM yujinxiang; 例2,撤消授予郁金香这个用户,修改学生表的学生姓名,学生年龄的权限: REVOKE update ON t_student FROM yujinxiang; |
本文详细介绍了Oracle数据库中的账户类型(sysdba,sysoper,normal)、默认账户设置、创建和管理用户、权限的授予与撤销,以及对象权限的控制,包括常用的系统权限和角色。

322

被折叠的 条评论
为什么被折叠?



