创建一个用户:
create user xxx identified by yyy
当密码里面有特殊字符时 windows平台下面应该用 "yyy" 其它平台未测试
刚创建好的用户是没有任何权限的 连登录数据库的权限都没有
这时,就要给用户授予权限:
ORACLE里面的权限有系统权限和对象权限两种
可以通过
-
select
distinct p.privilege
-
from user_sys_privs p
-
order
by p.privilege
asc;
来查询ORACLE里面的所有系统权限;
常用的系统权限有 :
CREATE SESSION 创建会话 登录数据库
CREATE SEQUENCE 创建序列
CREATE SYNONYM 创建同名对象
CREATE TABLE 在用户模式中创建表
CREATE ANY TABLE 在任何模式中创建表
DROP ANY TABLE 在任何模式中删除表
CREATE PROCEDURE 创建存储过程
EXECUTE ANY PROCEDURE 执行任何模式的存储过程
CREATE USER 创建用户
DROP USER 删除用户
CREATE VIEW 创建视图
通过下面的SQL可以查询所有的对象权限:
select distinct t.privilege from user_tab_privs t;
结果如下:
FLASHBACK
EXECUTE
ON COMMIT REFRESH
ALTER
DEQUEUE
UPDATE
DELETE
DEBUG
UNDER
QUERY REWRITE
SELECT
READ
INSERT
INDEX
WRITE
REFERENCES
MERGE VIEW
另外还有角色授权 可以通过下面的SQL来查询ORALCE里面内置有哪些角色:
-
select
distinct r.granted_role role_name
-
from user_role_privs r
-
where r.default_role =
'YES'
-
order
by role_name
asc;
授权语句:grant 权限
-
系统授权直接写:
grant 权限名称
to 用户名;
-
对象权限则要写成:
grant 权限名称
on schema. 对象名
to 用户名
还要注意一点是:授予权的时候系统权限和对象权限不能同时写,也就是说不能写成下面这个样子:
GRANT CREATE TABLE, SELECT ON scott.test TO scott1
这样写会报 ORA-00990: 权限缺失或无效
但是系统权限和角色是可以同时写在一起授予给某一个用户的
再具体的内容请参阅附件文档里面grant下面的说明