用户管理
1、创建用户:
CREATE USER 用户名 IDENTIFIED BY 密码
DEFAULT TABLESPACE 表空间名
TEMPORARY TABLESPACE 临时表空间名
QUOTA 100M|unlimited ON 表空间名 #在创建用户时指定其所在默认表空间和分配表空间限额或无限制
PROFILE DEFAULT;
#(默认PROFILE或自己指定已经配置好的PROFILE)
如果没有指定永久表空间与临时表空间,用户会被系统自动分配到
USER
表空间和TEMP
临时表空间(这两个表空间会在实例创建时被系统自动创建)。
查询用户及其所在表空间:
SELECT username, default_tablespace, temporary_tablespace
FROM dba_users
WHERE username = '用户名';
2、用户授权:
1、授予用户连接权限:
#用户在刚刚创建完毕后是不能连接数据库的,因为他缺失缺失‘create session’权限
GRANT CREATE SESSION TO 用户名;
此外,有一个很少有人知道的创建新用户方法,使用
GRANT CONNECT
语句。
示例:(创建nice1用户)
SQL> GRANT CONNECT to nice1 IDENTIFIED BY nice1;
Grant succeeded.
SQL> conn nice1/nice1 #之前这个用户在数据库中是不存在的
Connected.
SQL> show user
USER is "NICE1" #该用户确实被创建
2、授予用户对表ddl权限和dml权限(对表得增删改查等操作)
#授予用户修改表权限:
SQL> GRANT ALTER ON TABLE_NAME TO USER;
#授予用户删除表权限:
SQL> GRANT DELETE ON TABLE_NAME TO USER;
#授予用户更新表权限:
SQL> GRANT UPDATE ON TABLE_NAME TO USER;
#授予用户插入表权限
SQL> GRANT INSERT ON TABLE_NAME TO USER;
查看当前用户所拥有的权限:
select * from session_privs;
查看某一个用户所拥有的系统权限:
select * from dba_sys_privs where GRANTEE='USERNAME';
3、表空间限额:
如果新用户使用的是默认表空间USERS
,在该表空间上未授予任何限额(quota),默认状态时,不给予用户任何表空间上的空间限额,因此该用户不能在表空间上创建任何对象,必须明确的为用户分配表空间限额,通常是在创建用户时给其分配表空间限额。
#为用户授予一个表空间上的空间限额
ALTER USER diana
QUOTA 100M ON USERS;
如果根本就不想让某一个用户在数据库中创建对象,就不要给他分配空间限额,如果他是一个在某个表空间上就具有空间限额的用户,则可以使用
ALTER USER
语句设置限额为0,如果在所有表空间上用ALTER USER
语句分配0限额,则该用户已经创建的对象仍然保留,只是再也不能创建任何新对象了,现有对象的尺寸也不能增长,因为已经收回了表空间限额。
#让某一个用户在所有表空间上具有无限的空间使用权,需要授予用户UNLIMITED TABLESPACE权限
SQL> alter user USERNAME quota unlimited on TABLESPACE_NAME;
User altered.
#查看用户对表空间配额(-1即无限制表空间配额)
SQL> select tablespace_name,username,max_bytes from DBA_TS_QUOTAS where username='USERNAME';
#下面这种方式是全局性的. 即修改用户多所有表空间的配额
SQL> grant unlimited tablespace to anqing;
Grant succeeded.
如果想让用户创建他自己的表空间,则必须通过GRANT CREATE TABLESPACE TO USERNAME
命令允许他创建表空间,在他创建的表空间中创建数据库对象,则在这些表空间上不需要授予空间限额,可以使用DBA_TS_QUOTAS
视图查看分配给一个用户的各表空间限额的使用情况,最大配额需要查询max_bytes字段。
示例:
SQL> select tablespace_name, username, bytes from dba_ts_quotas;
TABLESPACE_NAME USERNAME BYTES
---------------------- ----------------------- ------
SYSAUX FLOWS_FILES 0
SYSAUX OLAPSYS 5373952
USERS DIANA 0
SYSAUX SYSMAN 76021760
USERS HR 1638400
SYSAUX APPQOSSYS 0
6 rows selected.
SQL>
3、更改用户:
1、更改用户密码:
ALTER USER USERNAME IDENTIFIED BY PASSWORD;
#或在用户登录时使用SQLplus中PASSWORD命令更改自己的密码
SQL> show user
USER is "DIANA"
SQL> password
Changing password for DIANA
Old password: *****
New password: *****
Retype new password: *****
Password changed
SQL>
2、更改用户默认表空间:
ALTER USER USERNAME DEFAULT TABLESPACE TABLESPACE_NAME;
3、更改用户默认临时表空间:
ALTER USER USERNAME TEMPORARY TABLESPACE TABLESPACE_NAME;
4、删除用户:
DROP USER
命令不仅能删除用户,而且还删除用户所拥有的对象,如果数据库中其他对象依赖于这个用户,则不能简单的使用DROP USER
命令,必须附加CASCADE
参数,它删除、用户的模式和依赖对象
DROP USER USERNAME [CASCADE];
至此结束,部分内容会后续补充,有问题欢迎留言,谢谢。