【基础】Oracle 用户创建、赋权、查询及删除操作 解锁
Oracle用户的概念对于Oracle数据库至关重要,通俗的讲就是访问Oracle数据库的“人”。
Oracle 成功安装后默认拥有下面几个系统用户:
sys:sys用户是数据库的超级用户,具有DBA权限,并具有sysdba权限(管理实例,启停Oracle),是Oracle数据库中权限最高的帐号,只能以sysdba或sysoper登陆,不能用normal。
system:system用户是数据库内置的一个普通管理员,拥有普通DBA角色权限,但是没有sysdba权限,该帐号用于管管理数据库,只能以Normal登陆,你手工创建的任何用户在被授予DBA角色后都跟这个用户差不多。相当于sys是qq群主,system是qq群管理员
sysman:也是管理员级别的用户,用于操作企业管理器。
Scott:默认是被锁定的,需要去解锁它,才可以被登陆 。
注意:前三个用户使用统一在安装Oracle时设置的密码,而Scott用户的默认密码为tiger,如果不解锁使用PL/SQL登录时会提示“账号被锁定”,如下图:
用户权限
Oracle数据库用户权限分为:系统权限和对象权限两种。
系统权限:比如:Create Session可以和数据库进行连接权限、Create Table、Create View 等具有创建数据库对象权限。
对象权限:比如:对表中数据进行增删改查操作,拥有数据库对象权限的用户可以对所拥有的对象进行相应的操作。
数据库角色
CONNECT角色:connect角色是Oracle用户的基本角色,connect权限代表着用户可以和Oracle服务器进行连接,建立session(会 话)。
RESOURCE角色:resouce角色是开发过程中常用的角色。RESOURCE给用户提供了可以创建自己的对象,包括:表、视图、序列、过程、触发器、索引、包、类型等。
DBA角色:DBA角色是管理数据库管理员该有的角色。它拥有系统的所有权限,和给其他用户授权的权限。SYSTEM用户就具有DBA权限。
因此,在实际开发过程当中可以根据需求,把某个角色或系统权限赋予某个用户。授权语句如下:
注意:系统权限只能通过DBA用户授权,对象权限有拥有该对象权限的对象授权(不一定是本身对象)!用户不能自己给自己授权!
概念部分也就那么多,大家清楚就行,下边直接上语法实例。
语法:创建Oracle用户JT_CS
-- Create the user
create user JT_CS--用户名
identified by "123456"--密码
default tablespace USERS--默认表空间名
temporary tablespace temp --临时表空间名
profile DEFAULT --数据文件(默认数据文件)
account unlock; -- 账户是否解锁(lock:锁定、unlock解锁)
语法:查看所有用户信息
select * from dba_users;
通过上面语句,可以创建一个JT_CS用户,但是该用户现在还不能登录数据库,因为它没有登录数据库权限,最少他需要一个create session系统权限才能登录数据库。
语法:赋予用户权限
--GRANT 对象权限 on 对象 TO 用户
--(表的增删改权限授权,授权JT_CS用户可以增删改查SYSTEM用户下的TB_STUDENT表)
grant select, insert, update, delete on SYSTEM.TB_STUDENT to JT_CS;
--GRANT 系统权限 to 用户(授予JT_CS用户select any table的系统权限)
grant select any table to JT_CS;
--GRANT 角色 TO 用户
grant dba TO JT_CS;--授权dba角色权限(DBA权限)
grant connect to JT_CS;--授权connect角色权限(普通权限)
grant resource to JT_CS;--授予resource角色权限(普通权限)
语法:取消用户权限
-- Revoke 对象权限 on 对象 from 用户
revoke select, insert, update, delete on SYSTEM.TB_STUDENT from JT_CS;
-- Revoke 系统权限 from 用户
revoke SELECT ANY TABLE from JT_CS;
-- Revoke 角色(role) from 用户
revoke dba from JT_CS;--取消dba权限
revoke RESOURCE,CONNECT from JT_CS;--取消普通权限
语法:查询用户拥有哪些角色权限
--dba账号查看所有账号的权限
select * from dba_role_privs;
--普通账号查看自己的权限
select * from user_role_privs;
--查看当前用户所拥有的权限
select * from session_privs;
--dba账号查看角色所有的权限
select * from dba_sys_privs;
select * from dba_sys_privs where grantee=‘CONNECT‘;
语法:删除JT_CS用户
DROP USER JT_CS CASCADE;--加上CASCADE则将用户连同其创建的东西全部删除
语法:Oracle用户修改密码及锁定状态
--修改用户信息
alter user JT_CS
identified by ****** --修改密码
account lock;--修改用户处于锁定状态或者解锁状态 (LOCK|UNLOCK )
--或单独进行操作修改
alter user JT_CS account unlock;
alter user JT_CS identified by 12345678;
扩展知识
默认情况下Oracle只对sys,system,dbsnmp,sysman,mgmt_view五个帐户进行了解锁,如果希望其它用户也能登录需要手工进行解锁。