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