我有一个数据库和一个管理它的用户。然后我有一个额外的 USER_APP,我向它授予了对我的 oracle 数据建模器中所有表的 CRUD 访问权限(然后通过生成的脚本应用这些)
我为来自 USER_APP 帐户的每个表创建了一个同义词,语法如下:
create synonym USER_APP.CLIENTS for USER.CLIENTS;
Run Code Online (Sandbox Code Playgroud)
并且对于每个表生成成功并提交。但是当我尝试在该帐户上以任何方式使用它时,例如:
select * from CLIENTS;
Run Code Online (Sandbox Code Playgroud)
我收到 CLIENTS 不存在的错误,即
ORA-00942 : table or view does not exist.
Run Code Online (Sandbox Code Playgroud)
我能做些什么来解决这个问题,或者我应该在哪里寻找原因/解决方案?
同义词与特权无关。它们只是简化命名的一种方式。
您收到的错误似乎表明user_app该user.clients表没有权限。你需要授予那个
GRANT SELECT, INSERT, UPDATE, DELETE
ON user.clients
TO user_app;
Run Code Online (Sandbox Code Playgroud)
当然,在您的实际系统中,我猜您会向某个角色授予特权,并且该角色将被授予user_app.