和第三方对接:
我需要将某数据库下某个schema下指定的几个表拿給第三方系统看,
这个第三方系统只能查看该指定的几个表,不能进行进行增删改操作,
解决方法
1、创建只读用户:
CREATE USER ronly WITH ENCRYPTED PASSWORD 'r123456';
2、设置默认事务只读:
alter user ronly set default_transaction_read_only=on;
3、赋予用户连接数据库mypgsql的权限:
GRANT CONNECT ON DATABASE mypgsql to ronly;
4、现有的所有在模式(schema)下的表的使用权限赋给用户ronly
GRANT USAGE ON SCHEMA myschema1 to ronly;
5、赋予用户ronly所有public下的表的select权
GRANT SELECT ON myschema1.table1,myschema1.table2 TO ronly;
至此,权限设置完成!
可以达到只读table1,table2的功能
但是我用该只读用户登录数据库之后,发现别的schema 也显示出来了,如myschema2显示出来了,以及上面的myschema1中的table3也显示出来了
请问我们的数据库角色授权可以指定用户登录只显示某个schema下的指定table1、table2,但是不显示table3这样的效果么?