Oracle学习4.0(SQL语句之DCL)

DCL
SQL语句分为三类:DML/DDL/DCL,DCL主要表示的是数据库的控制语句,控制就是操作权限,而在DCL之中,主要有两个语法:GRANT,REVOKE

权限的操作基础需要有用户,我们来创建一个新用户,创建新用户必须是具备管理员权限的SYS,SYSTEM两个用户操作。

切换到SYS用户

CONN SYS/ORACLE AS SYSDBA;

创建一个haha用户,密码为oracle

CREATE USER haha IDENTIFIED BY oracle;

使用haha用户进行登陆

conn haha/oracle;
执行该登陆后返回以下错误:
ORA-01045: user HAHA lacks CREATE SESSION privilege; logon denied
提示用户没有创建会话的权限

授权该权限给haha用户

conn sys/oracle as sysdba;
grant create session to haha;

再次使用haha用户进行连接

conn c##haha/oracle;

登陆成功后,使用create创建一张表

CREATE TABLE MYTAB(
ID NUMBER PRIMARY KEY,
NAME VARCHAR2(50)
);
提示如下错误:
ORA-01031: insufficient privileges

关于数据表的保存问题
在oracle之中所有的数据表都是保存在硬盘上,但是不是每一张表都保存在硬盘上,而是表空间保存在硬盘上,数据表保存在表空间中。

给haha用户创建表的权限

conn sys/oracle as sysdba;
grant create table to c##haha;

再次使用haha用户进行创建表

CREATE TABLE MYTAB(
ID NUMBER PRIMARY KEY,
NAME VARCHAR2(50)
);

如果仍然没有权限,执行以下命令

GRANT CONNECT,RESOURCE TO c##haha;

当管理员创建了用户以后就存在了用户的管理。

修改用户密码

ALTER USER c##HAHA IDENTIFIED BY Oracle;

重置密码后让用户在第一次登陆的时候可以修改密码

ALTER USER HAHA PASSWORD EXPIRE;
下次登陆的时候会返回如下提示:
ORA-28001: the password has expired

锁定用户

ALTER USER HAHA ACCOUNT LOCK;

再次登陆的时候会返回如下提示:

ORA-28000: the account is locked

解锁一个用户

ALTER USER HAHA ACCOUNT UNLOCK;

不同的用户可以访问其他用户的数据表,使用完整的“用户名.表名称”即可。

使用haha用户访问scott用户的emp表;

SELECT * FROM SCOTT.EMP;
返回如下错误提示:
ORA-00942: table or view does not exist
此时,需要将scott用户的权限授予haha用户才可以让其访问emp表,主要权限有四个:
增:INSERT
删:DELETE
改:UPDATE
查:SELECT

使用系统用户将scott.emp表的SELECT/INSERT权限授予haha用户

GRANT SELECT,INSERT ON SCOTT.EMP TO HAHA;

回收权限

REVOKE SELECT,INSERT ON SCOTT.EMP from HAHA;

回收所有权限

REVOKE CONNECT,RESOURCE,CREATE TABLE,CREATE SESSION FROM HAHA;

删除haha用户

DROP USER HAHA;
提示以下错误信息:
ORA-01922: CASCADE must be specified to drop ‘HAHA’
必须指定级联删除才可以;

指定级联删除

DROP USER HAHA CASCADE;
速度相对于创建慢了很多。

猜你喜欢

转载自blog.csdn.net/weixin_42054244/article/details/82586439