项目上经常会有这样的需求:与其他系统对接,需要提供某些数据给对方访问,对方不能访问到库中其他的表。碰到这样的情况,我们就可以通过用户授权、创建同义词来达到要求。
1、首先创建一个新的用户,并赋予用户链接数据库的权限:
SQL>create user 用户名 identified by 密码;
SQL>grant create session to 用户名;
2、以应用服务的用户连接数据库,并对某张表赋予权限给新的用户访问:
conn 应用服务用户/密码;
SQL>grant select on 表名/视图名 to 用户名;--查询权限
SQL>grant all on 表名 to 用户名;--所有权限
这里只给查询权限
3、连接新增的用户访问应用服务的表:
SQL>conn 用户名/密码;
SQL>select * from 应用服务用户.表名;
4、创建同义词:
首先要一管理员身份登录系统给新用户创建同义词的权限:
SQL>grant create synonym to 用户名;
再以新增的用户连接并创建同义词:
SQL>create synonym 名称 for 应用服务用户.表名;
备注:
创建同义词语法结构:
CREATE [OR REPLACE] [PUBLIC] SYSNONYM [当前用户.]synonym_name
FOR [其他用户.]object_name;
Oracle synonym 同义词按照访问权限分为私有同义词、公有同义词。
私有同义词:私有同义词只能当前用户可以访问,前提:当前用户具有create synonym 权限。
公有同义词:公有同义词只能具有DBA用户才能进行创建,所有用户都可以访问的。
同义词删除语法结构:
DROP [PUBLIC] SYNONYM [用户.]sysnonym_name;
同义词删除只能通过同义词拥有者的用户或者具有DBA权限的用户才能删除。