详解oracle用户创建(create user)

来源:互联网 发布:python基础编程第二版 编辑:程序博客网 时间:2024/06/05 11:27
        用户能访问数据库前必须要有获得相应授权的账号,oracle中创建一个用户并为其分配密码
很简单,但是在创建用户的同时其实还可以指定很多该用户的属性,另外还有用户的特权授予。
以便用户去执行相应的操作。当创建了一个的同时也创建了一个通的shema,shema与用户是
一一对应的关系。shema是数据库对象的逻辑容器。
在创建用户的过程中可以指定的用户属性有:
1、认证方式
2、认证密码
3、默认的永久表空间,临时表空间
4、表空间配额
5、用户账号状态(locked or unlocked)
6、密码状态(expired or not)
语法格式:
create user username
identified by password;
你可以创建仅供运用程序使用的账户,用于运用程序连接数据库,没人可以使用该账户登录
到数据库。

oracle会根据你创建数据库时候的配置自动的创建预置账户:
所有的数据库都包括管理账户:
sys            默认密码:chang_on_install
system     默认密码:manager
sysman    默认密码:chang_on_install
dbsnmp   默认密码:dbsnmp
其实并不是所有的数据库都包括,你若在使用dbca创建数据库的是,不勾选 
confiure enterprise manager 
sysman与dbsnmp就不会有了。
如果安装的时候要求安装了sample schema,还会多出一些预置账户其中常用的有:
hr               默认密码:hr
scott          默认密码:TIGER

所有的数据都包含有内部账户(internal accounts),这些自动创建的用户,使得特别的
oracle特性或者组件拥有他们自己的schema。为保证这些账户被未经授权的使用,这些
账户是lock的,密码设置为expire。

SQL> create user oracleusr     //用户名:oracleuser
  2  identified by oracle      //登陆验证密码:oracle (密码是大小写敏感的)
  3  default tablespace users  //用户的默认表空间:users
  4  quota 10m on users        //默认表空间中可以使用的空间配额:10MB
  5  temporary tablespace temp //用户使用的临时表空间
  6  password expire;          //密码状态,过期。登陆的时候要求用户修改。
User created

用户创建过程中的注意事项:
1、对temporary tablespace不能指定配额。
2、如果没有为用户指定默认表空间,将使用system表空间,强烈建议指定默认表空间。
3、默认表空间不能是undo tablespace或者temporary tablespace。
4、如果没有为用户指定默认表空间,临时表空间,用户将使用system表空作为默认表空间
与临时表空,强烈避免出现此种状况。

可以查询数据字典dba_users查询用户的信息
下面查询上面创建的用户的部分信息。
SQL> select username,user_id,account_status,default_tablespace,temporary_tablespace
  2  from dba_users
  3  where username='ORACLEUSR';
 
USERNAME                          USER_ID ACCOUNT_STATUS                   DEFAULT_TABLESPACE             TEMPORARY_TABLESPACE
------------------------------ ---------- -------------------------------- ------------------------------ ------------------------------
ORACLEUSR                              70 EXPIRED                          USERS                          TEMP
注:dba_users中的password列已经在oracle11gR2中弃用了,取而代之的是authentication_type列。

修改用户的密码:
语法格式:
alter user user_name identified by new_password;

SQL> alter user system identified by oracle11g;
User altered
SQL> alter user oracleusr identified by oracle11g;
User altered
要注意了,oracle中给用户修改密码的时候是不需要,输入旧密码的。这是一个安全隐患。
任何用户可以给自己修改密码,但是要修改别人的密码需要取得相应的权限。
 
 
 
更改用户的密码:
除了使用alter user命令修改用户的密码以后,可以在sql*plus中使用password关键字修改
密码。
SQL> conn hr/hr
已连接。
SQL> password
更改 HR 的口令
旧口令:
新口令:
重新键入新口令:
口令已更改
SQL> conn system as sysdba
输入口令:
已连接。
SQL> password scott   //DBA可以使用password+username修改其他用户的密码。
更改 scott 的口令
新口令:
重新键入新口令:
口令已更改
在pl/sql等其他工具中该命令是无法使用的。

给用户授予create session特权,以创建会话:
SQL> conn system as sysdba
输入口令:
已连接。
SQL> grant create session to oracleusr;
授权成功。
SQL> conn oracleusr
输入口令:
已连接。
这样用户就可以创建会话登录到oracle数据库中了.

锁定用户账号,当用户登录的时候会报ORA-28000的错误:
SQL> alter user oracleusr account lock;
用户已更改。
SQL> conn oracleusr
输入口令:
ERROR:
ORA-28000: 帐户已被锁定

设置用户密码的状态:
密码过期以后用户登录的时候会提示修改密码,并报ORA-28001错误。
SQL> alter user oracleusr password expire;
用户已更改。
SQL> conn oracleusr
输入口令:
ERROR:
ORA-28001: 口令已经失效
更改 oracleusr 的口令
新口令:
重新键入新口令:
口令已更改
已连接。

删除用户账户:
SQL> create user testuser identified by oracle11g;
用户已创建。
SQL> drop user testuser;
用户已删除。
请谨慎删除用户,删除用户的同时用户对应的schema中的对象也将被删除.

用户信息的查询:
很多时候只靠查询dba_users数据字典,用户的相关信息还可以查询:
dba_ts_quotas查询用户所在永久表空的配额等信息。
其实数据库中的很多用户都不需要磁盘配额,因为他们只需要其他schema中对象的访问与操作
特权。
SQL> select tablespace_name,bytes,max_bytes
  2  from dba_ts_quotas
  3  where username='ORACLEUSR';
 
TABLESPACE_NAME                     BYTES  MAX_BYTES
------------------------------ ---------- ----------
USERS                                   0   10485760

database_properties查询有关默认临时表空间,永久表空间的设置情况。
max_bytes如果值是-1表示在对应的表空间中的磁盘配额是unlimited。

关于profile:
profile用于设置一系列的数据库资源使用限制。把profile分配给用户,用户的资源使用
被设置在profile的限制之内。使用create profile 创建profile.使用create user或
alter user给用户分配profile.

profile中的限制又分为两种:
resource_parameters:
sessions_per_user:指定用户并发的会话数。
cpu_per_session:以百分之一秒为单位,指定用户的CPU占用时间。
cpu_per_call:以百分之一秒,指定一次调用的的CPU占用时间。
connect_time:以分为单位,指定会话的持续时间。
idle_time:以分为单位,指定会话的空闲时间。
logical_reads_per_session:指定允许的logical reads 块数量。
logical_reads_per_call:指定一次调用允许的logical reads块数量。
private_sga:一个会话在SGA共享池中分配的私有会话空间的大小。
该参数只有在共享服务器模式下才有效。
composite_limit:以服务单元指定一个会话总的资源开销。oracle会根据cpu_per_session,
connect_time,logical_reads_per_session,private_sga的加权值来计算service units。

SQL> create profile new_profile1 limit  //profile名称new_profile1
  2  sessions_per_user  5               //用户的同时并发会话数5
  3  cpu_per_session   unlimited        //会话的CPU占用时间无限制
  4  cpu_per_call 6000                  //一次调用不能占用CPU的时间不能超过60秒
  5  connect_time 60                    //单个会话持续的时间不能超过60分钟
  6  logical_reads_per_session 1500     //单个会话所能允许的逻辑读块数:1500
  7  logical_reads_per_call default     //一次调用的所能允许的逻辑读块数使用默认值
  8  private_sga 10k                    //单个会话可以占用的sga的内存空间:10kb
  9  composite_limit 5000000;           //复合资源限制的数量500万服务单元。
配置文件已创建
此处没有指定idle_time,password_parameters的参数,所有点那个把new_profile1分配给用户
的时候,这些限制将使用default profile中的默认值。

给用户分配profile:
SQL> alter user oracleusr profile new_profile1;
用户已更改。
如果用户在创建的时候不指定profile,oracle会自动把default profile分配给用户.

password_parameters:
failed_login_attempts:用户账户被锁定前,用户登录的尝试次数,默认值是10次。
password_life_time:指定密码过期的时间,默认值是180天。
password_reuse_time:当前密码可以重用以前必须经过的时间间隔。
password_reuse_max:当前密码可以被重用前需要修改的次数。
以上两个参数需要一同使用。
password_lock_time:当超过failed_login_attempts指定的值时,账户被锁定的天数。默认是一天。
password_grace_time:在password_life_time到期以后宽限用户使用原密码登录的天数
如果,在password_grace_time指定的天数内,旧密码仍有效,但是会提高用户更改密码。默认是7天。
password_verify_function:指定密码复杂度验证的PL/SQL函数,或第三方运用程序。不使用
密码验证函数,password_verify_function设置为null。

SQL>  create profile new_profile2 limit
  2   failed_login_attempts 3
  3   password_life_time 90
  4   password_reuse_time 180
  5   password_reuse_max 3
  6   password_verify_function null
  7   password_lock_time 1
  8   password_grace_time 5;
配置文件已创建
SQL> alter user oracleusr profile new_profile2;
用户已更改。
注意此时前面分配给用户的new_profile1就被new_profile2取代了。
在new_profile中未指定的resource_parameters会自动使用default profile中的默认值。
所有应该把所有的资源限制写在同一个profile中。

补充上节内容:
上节中提到了oracle的预置账户:sys,system
sys与system都具有很高的权限,都被授予了dba角色。但是sys的权限要高于system,sys用户
可以执行system用户无法执行的:数据库升级、数据库备份与恢复。system用户主要用于执行
数据库的日常管理工作。
注:数据库中数据库字典包含的所有的基表与视图都存储在sys schema中。这些基表与视图
对数据库的运行十分的关键,为了保证数据字典的完整性,在sys schema中的基表只能被数据库
操作。system schema额外的用于数据库管理的表与视图。


 
 
 
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 公租房摇号摇到了又怎么办 公租房被清退会怎么办 公租房摇不到号怎么办 公租房到期不搬怎么办 租房到期租客不搬怎么办 房产证面积与实际不符怎么办 社保晚交了1天怎么办 个人社保忘交了怎么办 个人社保晚交了怎么办 医保晚交了几天怎么办 辞职后转为灵活就业养老怎么办 公司名称变更提取不了公积金怎么办 五险合一软件已经减员怎么办 法人社保不在投标单位怎么办 换工作单位后社保怎么办 在北京孩子没有一老一小怎么办 深户小孩怎么办社保卡 社保卡没办下来去医院住院怎么办 老年社保卡丢了怎么办 外墙掉瓷砖伤车伤人怎么办 医保卡姓名弄错了怎么办 走工伤和走社保怎么办 公司在朝阳社保在海淀怎么办 公司没缴纳个税怎么办 报个税工资报少了怎么办 医院预约单丢了怎么办 肛瘘手术后太疼怎么办 低位保肛手术后吻合口瘘怎么办 做完痔疮手术后大便困难怎么办 20岁长痔疮了怎么办 孕妇痔疮痒的难受怎么办 痔疮术后伤口不愈合怎么办 剖腹产液化伤口长的慢怎么办 内痔斑痕怎么办了能消化 油条面和稀了怎么办 解脲支原体感染怀孕怎么办 怀孕了检查出解脲支原体感染怎么办 大便是黑色的要怎么办 大人直肠给药不好意思怎么办 肛周脓肿长肉芽怎么办 二岁宝宝有直肠息肉怎么办