Oracle数据库教程-用户与权限

Oracle 是面向用户的,在 Oracle 中一般只有一个数据库DATABASE,可以在数据库中创建多个不同的用户USER,给用户创建权限和分配角色。而MySQL是面向数据库的,可以建立多个数据库,在数据库中创建表、索引等。

Oracle 创建用户

Oracle 中可以用 CREATE USER 命令来创建用户

创建用户基本语法: 

--创建用户
CREATE USER USERINFO IDENTIFIED BY 123456 ACCOUNT LOCK

详细语法:

--创建用户,用户名,一般为字母数字型和“#”及“_”符号;用户口令,一般由字母数字型和“#”及“_”符号
CREATE USER [用户名] IDENTIFIED BY [口令]

--如果新建用户时指定了IDENTIFIED EXTERNALLY,那么该用户只能通过操作系统进行身份验证
OR IDENTIFIED EXETERNALLY

--表示用户名由Oracle安全域中心服务器验证,CN名字表示用户的外部名
OR IDENTIFIED GLOBALLY AS ‘CN=user--默认表空间,tablespace表空间名称
[DEFAULT TABLESPACE tablespace]

--默认临时表空间,temptablespace临时表空间名称
[TEMPORARY TABLESPACE temptablespace]

--用户可以使用的表空间的字节数
[QUOTA [integer K[M] ] [UNLIMITED] ] ON tablespace

--用户可以使用的临时表空间的字节数
[,QUOTA [integer K[M] ] [UNLIMITED] ] ON temptablespace

--资源文件名称
[PROFILES profile_name]

--用来设置用户口令过期、失效,强制用户登录数据库时候必须修改口令
[PASSWORD EXPIRE]

--用户是否被加锁,默认情况下是不加锁的
[ACCOUNT LOCK or ACCOUNT UNLOCK] 

 

Oracle 分配角色/权限

一个新建用户或者新建角色是没有任何的权限的,需要手动分配角色和权限,语法如下:

GRANT 角色|权限 TO 用户|角色

常用的系统权限:

系统权限 权限操作
create user 创建用户权限
drop user 删除用户权限
create session 连接数据库权限
create view 创建视图权限
create sequence 创建序列权限
create table 用户框架创建表权限
create any table 任意框架创建表权限
drop table 用户框架删除表权限
drop any table 任意框架删除表权限
create procedure 创建存储过程权限
execute any procedure 任意框架执行存储过程权限
create synonym 创建同义词权限

 

 

 

 

 

 

 

 

 

 

 

 

 

 

为用户分配系统权限:

--基本语法
GRANT  权限1, 权限2, ... TO  user_name ;

--为用户USERINFO 分配连接数据库、创建用户和创建视图的权限
GRANT  create session, create user, create view TO USERINFO ;

为用户分配某种权限后,用户才能进行该权限的操作,例如上面已经为用户USERINFO 分配连接数据库、创建用户和创建视图的权限,但是没有分配删除用户、创建序列等等的权限,该用户就不能进行删除用户、创建序列...,所以Oracle将权限进行了封装,某些权限封装成一个角色,再将角色分配给用户。

 

常用角色:

 CONNECT角色: 是授予最终用户的典型权利,最基本的权利,能够连接到Oracle数据库
        ALTER SESSION  ------------------  修改会话
        CREATE CLUSTER------------------ 建立聚簇
        CREATE DATABASE LINK---------- 建立数据库链接
        CREATE SEQUENCE---------------- 建立序列
        CREATE SESSION-------------------建立会话
        CREATE SYNONYM---------------- 建立同义词
        CREATE VIEW ----------------------建立视图
RESOURCE角色: 是授予开发人员的,提供给用户另外的权限,如创建他们的表,序列,过程,触发器,索引等,但不能创建视图。
        CREATE CLUSTER ------------------建立聚簇
        CREATE PROCEDURE --------------建立过程
        CREATE SEQUENCE ----------------建立序列
        CREATE TABLE ---------------------建表
        CREATE TRIGGER ------------------建立触发器
        CREATE TYPE ----------------------建立类型

DBA角色:是授予系统管理员的,DBA角色拥有所有的系统权限,用户system拥有DBA角色

 

为用户分配角色:

--将角色赋予用户
GRANT CONNECT TO USERINFO;--允许用户连接数据库 
GRANT RESOURCE TO USERINFO;--允许用户创建相关的数据库对象,如表,序列等。

--多个角色赋予一个用户可合并一条语句
GRANT CONNECT,RESOURCE TO USERINFO;

Oracle 自定义角色

语法:

--创建角色
CREATE ROLE myRole;

--为角色赋予权限
GRANT CREATE TABLE, CREATE VIEW TO myRole;

--将角色赋予用户
GRANT myRole TO USERINFO;

 

Oracle 回收角色/权限

 基本语法:

--回收角色|权限语法
ROVOKE 权限 [on 用户.表名称] FROM 用户;

--回收USERINFO用户的 myRole 角色
ROVOKE myRole FROM USERINFO;

  

Oracle删除用户

 一般以dba的身份去删除某个用户,如果用其它用户去删除用户则需要具有drop user的权限。

基本语法:

--删除用户:在删除用户时,如果要删除的用户,已经创建了表,那么就需要在删除的时候带一个参数cascade,即把该用户及表一同删除;
drop user 用户名 [cascade];

--删除用户USERINFO(USERINFO用户未创建表)
drop user USERINFO;

--删除用户USERINFO(USERINFO用户已创建表)
drop user USERINFO cascade;

  

Oracle修改用户

--修改用户的密码语法
ALTER USER USERINFO IDENTIFIED BY 654321

--默认为锁定状态,解除锁定
ALERT USER USERINFO ACCOUNT UNLOCK

 

参考博客:https://www.cnblogs.com/zlbx/p/4820323.html

原文地址:https://www.cnblogs.com/buaixiaoyumi/p/13530377.html