ORACLE 创建只读用户的问题

2013-08-15 15:06:18 +08:00
 Alexisused
我是这样做的:

CREATE ROLE RONLY;
GRANT CONNECT, SELECT ANY TABLE TO ROLE;
CREATE USER RO IDENTIFIED BY RO;
GRANT RONLY TO RO;

用sysdba登录 所有命令都执行成功。
用RO登录之后,随便查一个表都提示表或视图不存在。
SELECT * FROM USER_TABLES;
结果是空。

求教,问题在哪里?
3330 次点击
所在节点    Oracle
6 条回复
Alexisused
2013-08-15 15:08:31 +08:00
苦恼, 网上搜出来的结果都是这样做的...
yanyanlong
2013-08-15 15:53:38 +08:00
RO有自己建的表么?
Alexisused
2013-08-15 15:59:35 +08:00
@yanyanlong
没有

SELECT * FROM 别的用户.表 可以查
但是 CREATE SYNONYM TT FOR 别的用户.表 提示权限不足
yanyanlong
2013-08-15 16:11:25 +08:00
@Alexisused
1. 没有自己的表,USER_TABLES就是空的,试试ALL_TABLES。
2. 没有赋create SYNONYM 的权限
Alexisused
2013-08-15 16:25:20 +08:00
@yanyanlong 可以了 非常感谢!
Alexisused
2013-08-15 17:51:20 +08:00
总结一下:
///////////////////////////////////////////////////////
创建用户并指定表空间
///////////////////////////////////////////////////////
CREATE USER RONLY IDENTIFIED BY RONLY;


///////////////////////////////////////////////////////
分配权限
///////////////////////////////////////////////////////
GRANT CREATE SESSION, CREATE SYNONYM, CREATE VIEW, SELECT ON USERNAME.TABLENAME TO RONLY;


///////////////////////////////////////////////////////
创建同义词(RONLY用户下)
///////////////////////////////////////////////////////
CREATE OR REPLACE SYNONYM NEWNAME FOR USERNAME.TABLENAME;



///////////////////////////////////////////////////////
测试(RONLY用户下)
///////////////////////////////////////////////////////
SELECT * FROM NEWNAME;

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/79183

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX