greenplum 6 创建用户问题权限问题异常(创建只查视图用户)

greenplum 6 创建用户问题权限问题异常(创建只查视图用户)

解决普通用户默认无限制访问其它数据库问题;

解决普通用户可以无限制建表问题;

解决普通用户可以用navicat等工具查看系统原表问题;

背景:我发现创建一个一个普通用户,在没有做特殊处理的情况下这个用户可以随意访问其它数据库,可以通过navicat 等工具随意查看库的表名、函数、视图名等信息(虽然不可编辑,但是也不想让外部无关人员看到无关信息)

参考的官方文档:https://gpdb.docs.pivotal.io/6-10/ref_guide/sql_commands/CREATE_ROLE.htmlhttps://gpdb.docs.pivotal.io/6-10/ref_guide/sql_commands/CREATE_RESOURCE_QUEUE.htmlhttps://gpdb.docs.pivotal.io/6-10/ref_guide/sql_commands/GRANT.html#topic1

下面开始解决以上问题:

                -- 回收数据库访问权限(限制普通用户访问指定数据库)

revoke connect on database gpdb from public;

revoke connect on database gpperfmon from public;

revoke connect on database postgres from public;

-- 或从 pg_hba.conf中限定

# TYPE    DATABASE    USER        ADDRESS                METHOD

# host    viid        tydk        0.0.0.0/0              md5

1234567


                --系统表权限清空:防止用户登录上去就能查看(限制普通用户通过navicat等工具查看无关信息)

revoke all on pg_class from public;

revoke all on pg_tablespace from public;

revoke all on pg_user from public;

revoke all on pg_roles from public;


                -- 创建资源队列(连接数=3,最大内存使用:1024MB,优先级:{MIN|LOW|MEDIUM|HIGH|MAX})

DROP RESOURCE QUEUE test_queue;

create resource queue test_queue with (active_statements=3,MEMORY_LIMIT='1024MB',PRIORITY=MEDIUM);

-- 创建用户

CREATE USER test WITH PASSWORD 'test2020' resource queue test_queue;

--赋予访问权限

-- grant connect on database orcl to test;

-- 设置用户事务只读(限制用户只能有select权限)

alter user test set default_transaction_read_only=on;

-- revoke create on schema public from test;

-- revoke all on database viid from test;

-- revoke all on schema public from test;


                -- 创建视图

create view v_t_test_gb as select *  from t_test_gb where status='1' order by modifydate desc;

--赋予用户部分表查询权限

GRANT SELECT ON TABLE v_t_test_gb TO test;


                -- 查询用户所有权限

SELECT * FROM information_schema.table_privileges WHERE grantee='test';

-- 回收用户所有权限

revoke all on database orclfrom test;

revoke all on all tables in schema public from test;

-- 或者删除授予用户的任何特权

DROP OWNED BY test;

DROP USER test;


                客户端访问方式:

psql -h 127.0.0.1 -p 5432 -d orcl -U test -W;

java jdbc 访问方式:

spring.datasource.mpp.name=postgresql

spring.datasource.mpp.jdbc-url=jdbc:postgresql://127.0.0.1:5432/orcl

spring.datasource.mpp.driver-class-name=org.postgresql.Driver

spring.datasource.mpp.username=test

spring.datasource.mpp.password=test2020

org.postgresql

postgresql

你可能感兴趣的:(greenplum 6 创建用户问题权限问题异常(创建只查视图用户))