DCL语句

1.创建用户 USER

语法:CREATE USER 用户名 IDENTIFIED BY 密码;

1
CREATE USER SCOTT IDENTIFIED BY SCOTT;

–如果权限不足会报错,显示权限不足,需要赋予权限。

sys/sys system/system 两个管理员账号密码

–无法直接登录,需要修改’连接为‘成SYSDBA

2.赋权(赋予权限) GRANT

语法:GRANT CREATE SESSION TO 用户名;

1
GRANT CREATE SESSION TO YAOTIAN;

–新建的用户没有表,也不能创建表

2.2 给用户添加基础连接角色 CONNECT 和基础资源角色 RESOURCE

CONNECT 能够使用户连接到数据库中,并对其他用户的标有访问权限时,做增删改操作
RESOURCE 能让用户在自己的窗口中创建表等内容
语法:GRANT CONNECT,RESOURCE TO 用户名;
–权限是可以多个一起给的

1
2
3
4
GRANT CONNECT,RESOURCE TO YAOTIAN;

CREATE TABLE EMP(EMPNO NUMBER(4));
SELECT * FROM EMP;

2.3 给用户赋予查询某张表的权限

语法:GRANT SELECT ON 用户名.表名 TO 用户名;
–前一个用户名为表的所属人,后一个用户名为被赋予查看这张表的人

1
2
3
GRANT SELECT ON SCOTT.EMP TO YAOTIAN;

SELECT * FROM SCOTT.EMP;

2.4 赋予用户管理员权限

语法:GRANT DBA TO 用户名;

1
2
3
4
GRANT DBA TO YAOTIAN;

SELECT * FROM A;--还是查看
SELECT * FROM SCOTT.A;--这个才能查看

我现在在YAOTIAN用户下创建了一个CLASS_37的表,请问怎么在SCOTT用户下查看?
1.赋予管理员权限
2.赋予查看这张表的权限

3.收回权限 REVOKE

语法:REVOKE 权限 FROM 用户名;

1
2
3
4
5
6
7
8
REVOKE DBA FROM YAOTIAN;

SELECT * FROM SCOTT.A;--会有一点点的滞后,新开窗口以后就不能运行了

GRANT SELECT ON 用户名.表名 TO 用户名;
REVOKE SELECT ON 用户名.表名 FROM 用户名;


GRANT SELECT ON 用户名.表名 TO 用户名; 给某个用户赋予其他用户下表的查看权限

4.锁定/解锁用户 LOCK/UNLOCK

语法:ALTER USER 用户名 ACCOUNT LOCK;

1
2
3
4
5
6
ALTER USER  用户名 ACCOUNT UNLOCK;

ALTER USER YAOTIAN ACCOUNT LOCK;
SELECT * FROM EMP;

ALTER USER YAOTIAN ACCOUNT UNLOCK;

–1.可以在自己的用户下锁定自己,退出后无法登录
–2.锁定的用户在没有解锁之前无法登录

5.修改密码

创建用户的语法:CREATE USER 用户名 IDENTIFIED BY 密码;
修改密码的语法:ALTER USER 用户名 IDENTIFIED BY 新密码;

1
ALTER USER YAOTIAN IDENTIFIED BY yaotian;

–密码是严格区分大小写的,用户名不区分

6.删除用户

语法:DROP USER 用户名;–删除用户,但是里面有权限、表、视图等内容都不能用这个删除

1
DROP USER YAOTIAN CASCADE;--权限不足

–CASCADE需要在超级管理员的用户下进行
–1.自己无法删除自己
–2.如果赋权了,得先收回权限再删除用户,要不然无法删除用户
–3.如果硬要删除,在用户名后加上CASCADE即可

==GRANT DBA TO YAOTIAN;==

==DROP USER YAOTIAN CASCADE;==