Fork me on GitHub

用户的创建(学习笔记)

  • 创建用户:

语法:

CREATE USER 用户名 IDENTIFIED BY 密码
[DEFAULT TABLESPACE 表空间名称]
[TEMPORARY TABLESPACE 临时表空间表名]
[QUOTA 数字[K|M] UNLIMITED ON表空间名 
  QUOTA 数字[K|M] UNLIMITED ON表空间名 ...]
[PROFILE 概要文件名称 | DEFAULT]
[PASSWORD EXPIRE]
[ACCOUNT LOCK | UNLOCK]

如下:

[]的部分可以省略
CREATE USER 用户名 IDENTIFIED BY 密码:
创建用户同时设置密码,但是用户名和密码不能是Oracle中保留字,也不能是数字开头,如果要设置成数字需要将数字使用"声明如''99977''
DEFAULT TABLESPACE 表空间名称:用户存储默认使用的表空间,当用户创建对象没设置表空间时,就将保存在此处指定的表空间下,
TEMPORARY TABLESPACE 表空间名:用户所使用的临时表空间
QUOTA 数字[K|M] UNLIMITED ON表空间名:用户在表空间上的使用限额,可以指定多个表空间的限额 ,如果设置为UNLIMITED,则表示不设置限额
PROFILE:概要文件名称|DEFAULT:用户操作的资源文件,如果不指定则使用默认的配置资源文件
PASSWORD EXPIRE:用户密码失效,则在第一次使用时,必须修改密码
ACCOUNT LOCK |UNLOCK:用户是否为锁定状态,默认为UNLOCK。

需要管理员来创建用户

创建一个用户:

CREATE USER te IDENTIFIED BY te      --创建用户te密码te
DEFAULT TABLESPACE tbs_test          --默认表空间tbs_test
TEMPORARY TABLESPACE temp;           --临时表空间temp;

创建另一个用户

CREATE USER oracletest              --创建用户oracletest
IDENTIFIED BY oracletest            --密码:oracletest
DEFAULT TABLESPACE tbs_test         --默认表空间:tbs_test  
TEMPORARY TABLESPACE temp           --临时表空间 temp
QUOTA 8M ON tbs_test                 --在tbs_test表空间上最多使用8M
QUOTA 20M ON USERS                   --在users表空间上最多使用8M
ACCOUNT UNLOCK                       --用户默认为活动账户,UNLOCK为活动,LOCK为锁定  
PASSWORD EXPIRE;                     --用户第一次登录后要强制修改密码

创建完用户直接登录会提示:

ORA-01045:user te或者oracletest lacks create session privilege;logon denied

提示用户没有连接数据库的权限

分配权限有2种方式:

  1.    直接将权限分配给用户             --由于权限比较多不推荐
  2.    为用户授予角色                      --推荐使用

Oracle中预定义了一些角色:

 

 

NO

预定义角色

描述

1

EXP_FULL_DATABASE

导出数据库权限

2

IMP_FULL_DATABASE

导入数据库权限

3

SELECT_CATALOG_ROLE

查询数据字典的权限

4

EXCUTE_CATALOG_ROLE

数据字典上的执行权限

5

DELETE_CATALOG_ROLE

数据字典上的删除权限

6

DBA

系统管理员相关权限

7

CONNECT

授予用户最典型的权限连接权限

8

RESOURCE

授予开发人员的权限

 

CONNECT角色权限;

CREATE SESSION

连接数据库

 

RESOURCE角色权限

CREATE TRIGGER

创建触发器

CREATE SEQUENCE

创建序列

CREATE TABLE

创建建立表

CLUSTER

创建簇

CREATE PROCEDURE

创建存储过程

CREATE TYPE

创建类型

 

 

一般开发人员使用授予CONNECT 和RESOURCE角色

 

  • 为用户授予角色:
GRANT CONNECT,RESOURCE TO te;
GRANT CONNECT,RESOURCE TO oracletest;

这里使用创建的用户就可以登录并连接到数据库了

  • 维护用户:
  1. 修改用户密码:
ALTER USER 用户名 IDENTIFIED BY 新密码
ALTER USER oracletest IDENTIFIED BY test

    2.  控制用户锁定

 

ALTER USER 用户名 ACCOUNT LOCK | UNLOCK

将oracletest设置为锁定

ALTER USER  oracletest ACCOUNT LOCK

此时用oracle是不能登录和连接数据库的

 

将oracletest设置为解锁

ALTER USER  oracletest ACCOUNT UNLOCK

   3. 让密码失效

ALTER 用户名 PASSWORD EXPIRE

 将oracletest用户密码失效

ALTER oracletest PASSWORD EXPIRE

此时用oracletest用户登录时,会提示用户修改密码

4.修改表空间的配额

ALTER USER 用户名 QUOTA 数字[K|M] UNLIMITED ON 表空间名称

修改oracletest的表空间配额

ALTER USER oracle QUOTA UNLIMITED ON tbs_test

删除用户:

 

DROP USER 用户名 [CASCADE]
CASCADE子句删除模式中的所有对象

 

删除oracletest用户

DROP USER oracletest

授予角色:

 

GRANT 角色名,角色名,...  TO 用户名

 

GRANT CONNECT,RESOURCE TO te;
GRANT CONNECT,RESOURCE TO oracletest;

回收角色:

 

REVOKE 角色名,角色名.. FROM 用户名

 

REVOKE CONNECT,RESOURCE TO te;
REVOKE CONNECT,RESOURCE TO oracletest;

创建角色:

 

CREATE ROLE 角色名
[NOT IDENTIFIED |IDENTIFIED BY密码]
NOT IDENTIFIED 没有密码
IDENTIFIED BY 密码

 

创建一普通角色:

CREATE ROLE NOTEST;

查看DBA_ROLES字典查看角色是否创建成功和状态

SELECT * FROM dba_roles WHERE ROLE='NOTEST';

角色授权:

GRANT CREATE SESSION ,CREATE TABLE TO NOTEST;
连接和创建表的权限授予角色

查询role_sys_privs数据字典,状态都有哪些权限


SELECT * FROM role_sys_privs
WHERE role='NOTEST'
ORDER BY ROLE;

找到我们的角色查看权限

禁用当前会话中的所有角色

SET ROLE NONE;

启用当前会话中的所有角色

SET ROLE ALL;

删除角色:

DROP ROLE 角色名;

删除notest角色

DROP ROLE NOTEST;

 

 

 

posted @ 2015-01-09 01:56  森林森  阅读(876)  评论(0编辑  收藏  举报