创建用户:
create user nokey identified by zero;
预定义账户(predefined user accounts):
管理员账户有:sys system sysman dbsnmp. DBSNMP 用来监控数据库。
样例用户:HR SH OE
内部账户 如WKSYS.这些被用来一些新特性或者一些组件。
SYS的默认密码是CHANGE_ON_INSTALL
SYSTEM 的默认密码MANAGER
'
ALTER USER NOKEY ACCOUNT LOCK(或者UNLOCK) 锁定用户
select * from dab_users; 查看所有的用户信息
select * from dba_ts_quotas; 查看用户的表空间限额
select SID,SERIAL#,USERNAME FROM V$session 找出和用户相关的会话
select owner,object_name from dba_objects where owner like ' nokey'//查看nokey 用户用户的模式对象
drop user nokey ;删除用户
drop user nokey CASCADE;如果用户模式下存在对象,则用这句话删除用户。
select username from v$session where type = 'user';查看当前登录数据库的用户
==============================
限制用户对资源的消耗----概要文件(user profiles)
数据库的资源包括:CPU时间、会话的空闲时间、会话的连接时间、逻辑读(logical reads)、每个用户的并发会话数(concurrent sessions for each user)、
私有SGA区及用户私有SQL区(private SQL Areas)
select username, profile from dba_users;
USERNAME PROFILE
------------------------------ -------------------
MGMT_VIEW DEFAULT
SYS DEFAULT
SYSTEM DEFAULT
DBSNMP DEFAULT
SYSMAN DEFAULT
OUTLN DEFAULT
FLOWS_FILES DEFAULT
MDSYS DEFAULT
ORDDATA DEFAULT
ORDSYS DEFAULT
ANONYMOUS DEFAULT
EXFSYS DEFAULT
WMSYS DEFAULT
XDB DEFAULT
APPQOSSYS DEFAULT
ORDPLUGINS DEFAULT
APEX_030200 DEFAULT
SI_INFORMTN_SCHEMA DEFAULT
DIP DEFAULT
APEX_PUBLIC_USER DEFAULT
ORACLE_OCM DEFAULT
XS$NULL DEFAULT
已选择22行。
==========================================
管理员的验证之--使用口令文件验证
cmd>orapwd FILE=E:appdingqiproduct11.2.0dbhome_1databasePWDdabook.ora ENTRIES=5 FORCE=Y
SQL> create pfile = 'E:appdingqiproduct11.2.0dbhome_1databaseinitdabook.ora'
2 from spfile = 'E:appdingqiproduct11.2.0dbhome_1databaseSPFILEDABOOK.ORA'
3 /
文件已创建。
已用时间: 00: 00: 00.17
SQL> SHUTDOWN IMMEDIATE
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> CREATE SPFILE = 'E:appdingqiproduct11.2.0dbhome_1databaseSPFILEDABOOK.ORA'
2 FROM PFILE = 'E:appdingqiproduct11.2.0dbhome_1databaseinitdabook.ora'
3 /
文件已创建。
已用时间: 00: 00: 00.38
SQL> STARTUP
ORACLE 例程已经启动。
Total System Global Area 711430144 bytes
Fixed Size 1376968 bytes
Variable Size 293604664 bytes
Database Buffers 411041792 bytes
Redo Buffers 5406720 bytes
数据库装载完毕。
数据库已经打开。
SQL> CREATE USER newsuper IDENTIFIED BY zero;
用户已创建。
已用时间: 00: 00: 00.34
SQL> grant sysdba to newsuper;
授权成功。
已用时间: 00: 00: 00.20
SQL> connect newsuper as sysdba
输入口令:
已连接。
SQL> SET PAGESIZE 25
SQL> SET TIMING ON
SQL> SET FEEDBACK ON
SQL> select * from v$PWFILE_USERS;
USERNAME SYSDB SYSOP SYSAS
------------------------------ ----- ----- -----
SYS TRUE TRUE FALSE
NEWSUPER TRUE FALSE FALSE
已选择2行。
这里 newsuper用户是超级用户了密码是 zero
如果想撤销授权;使用下面的命令即可:
revoke sysdba from newsuper;
==============================================
角色和权限
一个角色是一组相关权限的集合,角色其实也是权限,它其实是结合了多个权限。
角色方便了权限的管理,如果要给某一类用户授予多个权限,我们可以创建一个角色,当给用户授权时,只需把角色授予用户即可,而不需要对该用户多次授权。
SQL> show user
USER 为 "SYS"
SQL> create role role1
2 /
角色已创建。
已用时间: 00: 00: 00.09
SQL> create role role2 identif
角色已创建。
已用时间: 00: 00: 00.01
SQL> grant create view to role
授权成功。
已用时间: 00: 00: 00.00
SQL> grant insert on manager t
grant insert on manager to rol
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
已用时间: 00: 00: 00.10
SQL> grant insert on tvb to ro
grant insert on tvb to role1
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
已用时间: 00: 00: 00.01
SQL> create user rawman identified by zero;
用户已创建。
已用时间: 00: 00: 00.01
SQL> conn rawman
输入口令:
ERROR:
ORA-01045: user RAWMAN lacks C
警告: 您不再连接到 ORACLE。
SQL> show user
USER 为 ""
SQL> conn sys as sysdba
输入口令:
已连接。
SQL> SET PAGESIZE 25
SQL> SET TIMING ON
SQL> SET FEEDBACK ON
SQL>
SQL> grant create session to rawman;
授权成功。
已用时间: 00: 00: 00.01
SQL> grant select on system.manager to rawman;
授权成功。
已用时间: 00: 00: 00.14
SQL> grant create table to rawman;
授权成功。
已用时间: 00: 00: 00.00
SQL>
SQL> grant create any index to rawman ;
授权成功。
已用时间: 00: 00: 00.00
SQL> grant role1 to rawman;
授权成功。
SQL> SELECT * from DBA_SYS_PRIVS WHERE grantee = 'RAWMAN';
GRANTEE PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
RAWMAN CREATE TABLE NO
RAWMAN CREATE ANY INDEX YES
RAWMAN CREATE SESSION NO
已选择3行。
已用时间: 00: 00: 00.07
SQL> select * from dba_tab_privs where grantee ='RAWMAN';
GRANTEE OWNER
------------------------------ ------------------------------
TABLE_NAME GRANTOR
------------------------------ ------------------------------
PRIVILEGE GRA HIE
---------------------------------------- --- ---
RAWMAN SYSTEM
MANAGER SYSTEM
SELECT NO NO
已选择 1 行。
查看rawman 被授予了哪些角色:
SQL> select granted_role from dba_role_privs where grantee = 'RAWMAN';
GRANTED_ROLE
------------------------------
ROLE1
===========================================================
同时,使用rawman 连接到数据库时可以进行已经被sys授权的一些权限的操作:
rawman 可以连接到数据库,可以查看system用户的表 manager(之前创建的table),可以创建自己的表rawman_tb1,
等等,同时rawman还继承了role1的一些权限。(grant role1 to rawman;)
SQL> conn rawman
输入口令:
已连接。
SQL> SET PAGESIZE 25
SQL> SET TIMING ON
SQL> SET FEEDBACK ON
SQL> select * from system.manager;
MGRNO MNAME JOB
---------- ------------------------------ ------------------------------
REMARK
--------------------------------------------------------------------------------
12 Smith manager
3600
13 Paul coder
3000
已选择2行。
已用时间: 00: 00: 00.14
SQL> create table rawman_tb1 (id number, name varchar(20));
表已创建。
已用时间: 00: 00: 00.24
SQL> select * from rawman_tb1
2 /
未选定行
已用时间: 00: 00: 00.00
SQL> desc rawman_tb1
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
ID NUMBER
NAME VARCHAR2(20)
SQL> grant create any index to item;
授权成功。