SQL语句分为三类:DML/DDL/DCL,DCL主要表示的是数据库的控制语句,控制就是操作权限,而在DCL之中,主要有两个语法:GRANT,REVOKE
权限的操作基础需要有用户,我们来创建一个新用户,创建新用户必须是具备管理员权限的SYS,SYSTEM两个用户操作。
CONN SYS/ORACLE AS SYSDBA;
CREATE USER c##haha IDENTIFIED BY oracle;
conn haha/oracle;
执行该登陆后返回以下错误:
ORA-01045: user HAHA lacks CREATE SESSION privilege; logon denied
提示用户没有创建会话的权限
conn sys/oracle as sysdba;
grant create session to haha;
conn haha/oracle;
CREATE TABLE MYTAB(
ID NUMBER PRIMARY KEY,
NAME VARCHAR2(50)
);
提示如下错误:
ORA-01031: insufficient privileges
关于数据表的保存问题
在oracle之中所有的数据表都是保存在硬盘上,但是不是每一张表都保存在硬盘上,而是表空间保存在硬盘上,数据表保存在表空间中。
conn sys/oracle as sysdba;
grant create table to haha;
CREATE TABLE MYTAB(
ID NUMBER PRIMARY KEY,
NAME VARCHAR2(50)
);
GRANT CONNECT,RESOURCE TO haha;
当管理员创建了用户以后就存在了用户的管理。
ALTER USER HAHA IDENTIFIED BY HAHAHA;
ALTER USER HAHA PASSWORD EXPIRE;
下次登陆的时候会返回如下提示:
ORA-28001: the password has expired
conn c##haha/oracle 重新登录修改密码
ALTER USER HAHA ACCOUNT LOCK;
ORA-28000: the account is locked
ALTER USER HAHA ACCOUNT UNLOCK;
不同的用户可以访问其他用户的数据表,使用完整的“用户名.表名称”即可。
SELECT * FROM SCOTT.EMP;
返回如下错误提示:
ORA-00942: table or view does not exist
此时,需要将scott用户的权限授予haha用户才可以让其访问emp表,主要权限有四个:
增:INSERT
删:DELETE
改:UPDATE
查:SELECT
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;
DROP USER HAHA;
提示以下错误信息:
ORA-01922: CASCADE must be specified to drop ‘HAHA’
必须指定级联删除才可以;
DROP USER HAHA CASCADE;
速度相对于创建慢了很多。