创建用户,角色,管理等。
CREATE USER username IDENTIFIED BY password OR IDENTIFIED EXETERNALLY OR IDENTIFIED GLOBALLY AS ‘CN=user’ [DEFAULT TABLESPACE tablespace] [TEMPORARY TABLESPACE temptablespace] [QUOTA [integer K[M] ] [UNLIMITED] ] ON tablespace [,QUOTA [integer K[M] ] [UNLIMITED] ] ON tablespace [PROFILES profile_name] [PASSWORD EXPIRE] [ACCOUNT LOCK or ACCOUNT UNLOCK]
其中:
CREATE USER username:用户名,一般为字母数字型和“#”及“_”符号。
IDENTIFIED BY password:用户口令,一般为字母数字型和“#”及“_”符号。
IDENTIFIED EXETERNALLY:表示用户名在操作系统下验证,该用户名必须与操作系统中所定义的用户名相同。
IDENTIFIED GLOBALLY AS ‘CN=user’:用户名由Oracle安全域中心服务器验证,CN名字表示用户的外部名。
[DEFAULT TABLESPACE tablespace]:默认的表空间。
[TEMPORARY TABLESPACE tablespace]:默认的临时表空间。
[QUOTA [integer K[M] ] [UNLIMITED] ] ON tablespace:用户可以使用的表空间的字节数。
[PROFILES profile_name]:资源文件的名称。
[PASSWORD EXPIRE]:立即将口令设成过期状态,用户再登录前必须修改口令。
[ACCOUNT LOCK or ACCOUNT UNLOCK]:用户是否被加锁,默认情况下是不加锁的。
eg:
CREATE USER user_name IDENTIFIED BY key;
修改用户密码:
ALTER USER user_name IDENTIFIED BY new_key;
也可以在sqlplus 登录后直接PASSWORD 会提示修改。
删除用户
DROP USER user_name;
向用户授予系统特权
GRANT EXECUTE ANY PROCEDURE TO suer_name [WITH ADMIN OPTION];
后面的 WITH ADMIN OPTION 这样 用户就可以将权授给别人
检查授予用户的系统特权
SELECT *FROM user_sys_privs;
撤销用户的系统特权
REVOKE CREATE TABLE FROM user_name;
对象特权
向用户授予对象特权
GRANT SELECT , INSERT ON table_name[.column_name] TO user_name [WITH GRANT OPTION];
检查已授予的对象特权
SELECT * FROM user_tab_privs_made [WHERE table_name='table_name'];
检查已接收的对象特权
SELECT *FROM user_tab_privs_recd ;
创建同名对象
CREATE SYNONYM ref_name FOR user_name.table_name; eg: CREATE SYNONYM customers FOR store.customers;
创建公共同名对象
CREATE PUBLIC SYNONYM ref_name FOR user_name.table_name;
需要创建公共用户需要授权 CREATE PUBLIC SYSNONYM (可以通过system 登录授予用户)
这样任何其他用户登录都能够利用创建的同名对象,跟上面的那个不同的是上面的只是创建的用户才能够使用。
撤销用户对象特权
REVOKE SELECT ON table_name FROM user_name;
如果user_name 将权力授予了其他用户,那么其他用户也会失去权力。
角色就是一组特权
创建角色
CREATE ROLE role_name [IDENTIFIED BY keyword];
角色授权
GRANT CREATE USER TO role_name1; GRANT role_name1 TO role_name2;
将角色授予用户
GRANT role_name TO user_name;
检查授予用户的角色
可以检查已经授予一个用户哪些角色
SELECT * FROM user_role_privs;
检查授予角色的系统特权
可以检查已经授予一个角色哪些系统特权。
SELECT * FROM role_sys_privs;
检查授予角色的对象特权
SELECT * FROM role_tab_privs;
默认角色
禁用默认角色
通过system 将用户的角色禁用
ALTER USER user_name DEFAULT ROLE ALL EXCEPT role_name;
然后user_name 登录时,想开启角色
SET ROLE role_name IDENTIFIED BY keyword;
想清楚全部角色
SET ROLE NONE;
清楚特定角色
SET ROLE ALL EXCEPT role_name;
撤销用户的角色
REVOKE role_name FROM user_name;
撤销角色中的特权
REVOKE ALL ON table_name FROM role_name;
删除角色
DROP ROLE role_name;