原 PG系数据库(PG、人大金仓KES)如何配置只允许某个用户u1只能访问某单个数据库db1,而不能访问其它库
Tags: 原创PGPostgreSQL人大金仓sao和sso用户权限管理访问控制
前言
有2种方法实现:
1、通过回收权限实现。
2、通过配置pg_hba.conf文件来实现。
如果你希望限制哪些用户能够连接到哪些数据库,授予/撤销 CONNECT 权限通常比在 sys_hba.conf项中设置规则简单。
方法1:通过SQL实现
u1只能访问db1
u2只能访问db2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | create user u1 PASSWORD 'lhr'; create user u2 PASSWORD 'lhr'; create database db1; create database db2; Revoke connect on database db1 from u2; Revoke connect on database db1 from public; Revoke connect on database db2 from u1; Revoke connect on database db2 from public; grant connect on database db1 to u1; grant connect on database db2 to u2; -- 可以访问 psql -U u1 -h 192.92.0.18 -p 5441 -d db1 psql -U u2 -h 192.92.0.18 -p 5441 -d db2 -- 不能访问 psql -U u1 -h 192.92.0.18 -p 5441 -d db2 psql -U u2 -h 192.92.0.18 -p 5441 -d db1 -- 系统库 Revoke connect on database esrep from public; Revoke connect on database kingbase from public; Revoke connect on database security from public; Revoke connect on database template0 from public; Revoke connect on database template1 from public; grant connect on database esrep to public; grant connect on database kingbase to public; grant connect on database security to public; grant connect on database template0 to public; grant connect on database template1 to public; |
没有登录权限的时候会报错:
1 2 3 4 5 | [root@alldb ~]# psql -U u2 -h 192.92.0.18 -p 5441 -d db1 Password for user u2: psql: error: connection to server at "192.92.0.18", port 5441 failed: FATAL: permission denied for database "db1" DETAIL: User does not have CONNECT privilege. [root@alldb ~]# |
方法2:通过配置pg_hba.conf文件
PostgreSQL
要配置 PostgreSQL 数据库只允许特定用户访问单个数据库,可以按照以下步骤进行设置:
创建用户和数据库:
如果还没有创建用户和数据库,可以先创建它们。本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!