zoukankan      html  css  js  c++  java
  • 用户的创建

    • 创建用户:

    语法:

    复制代码
    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;
  • 相关阅读:
    Spring学习(二) AOP 面向切面编程之概念(一)
    Spring学习(一) IOC容器学习
    多线程和同步分别有几种实现方法?
    如何理解"=="和equals方法
    &和&&的区别
    关于静态方法和非静态方法之间的调用
    缘来了,来园了
    Java设计模式-代理模式
    JavaBitSet学习
    kafka安装
  • 原文地址:https://www.cnblogs.com/Soprano/p/10658988.html
Copyright © 2011-2022 走看看