您的位置:58脚本 > PostgreSQL 用户名映射

PostgreSQL 用户名映射

2023-05-18 21:32

 PostgreSQL 用户名映射

当使用像 Ident 或者 GSSAPI 之类的外部认证系统时,发起连接的操作系统用户名可能不同于要被使用的数据库用户(角色)。在这种情况下,一个用户名映射可被用来把操作系统用户名映射到数据库用户。要使用用户名映射,在pg_hba.conf的选项域指定map=map-name。此选项支持所有接收外部用户名的认证方法。由于不同的连接可能需要不同的映射,在 pg_hba.conf中的map-name参数中指定要被使用的映射名,用以指示哪个映射用于每个个体连接。

用户名映射定义在 ident 映射文件中,默认情况下它被命名为pg_ident.conf 并被存储在集簇的数据目录中(不过,可以把该映射文件放在其他地方,见ident_file配置参数)。ident 映射文件包含的行的一般格式:

map-name system-username database-username

以在pg_hba.conf中同样的方式处理注释和空白。map-name是一个任意名称,它将被用于在pg_hba.conf中引用该映射。其他两个域指定一个操作系统用户名和一个匹配的数据库用户名。相同的map-name可以被反复地用在同一个映射中指定多个用户映射。

对于一个给定操作系统用户可以对应多少个数据库用户没有限制,反之亦然。因此,一个映射中的项应该被看成意味着这个操作系统用户被允许作为这个数据库用户连接,而不是按时它们等价。如果有任何映射项把从外部认证系统获得的用户名和用户要求的数据库用户名配对,该连接将被允许。

如果system-username域以一个斜线(/)开始,域的剩余部分被当做一个正则表达式(PostgreSQL的正则表达式语法详见第 9.7.3.1 节)。正则表达式可以包括一个单一的捕获,或圆括号子表达式,然后它可以在 database-username 域中以1(反斜线一)被引用。这允许在单个行中多个用户名的映射,这特别有助于简单的语法替换。例如,这些项

mymap   /^(.*)@mydomain.com$      1
mymap   /^(.*)@otherdomain.com$   guest

将为用户移除以@mydomain.com结束的系统用户名的域部分,以及允许系统名以@otherdomain.com结束的任意用户作为guest登入。

提示

记住在默认情况下,一个正则表达式可以只匹配字符串的一部分。如上例所示,使用^$来强制匹配整个系统用户名通常是明智的。

在启动以及主服务器进程收到SIGHUP 信号时,pg_ident.conf文件会被读取。 如果你在活动的系统上编辑了该文件,你将需要通知 postmaster(使用pg_ctl reload,调用SQL函数pg_reload_conf(), 或用kill -HUP)重新读取文件。

例 20.2中展示了一个可以联合pg_hba.conf文件(例 20.1)使用的pg_ident.conf文件。在这个例子中,对于任何登入到 192.168 网络上的一台机器的用户, 如果该用户没有操作系统用户名bryanhannrobert,则他不会被授予访问权限。只有当 Unix 用户robert尝试作为PostgreSQL用户bob(而不是作为robert或其他人)连接时,他才被允许访问。ann只被允许作为ann连接。用户 bryanh被允许以bryanh或者guest1连接。

例 20.2. 一个示例 pg_ident.conf 文件

# MAPNAME       SYSTEM-USERNAME         PG-USERNAME

omicron         bryanh                  bryanh
omicron         ann                     ann
# bob 在这些机器上有用户名 robert
omicron         robert                  bob
# bryanh 也可以作为 guest1 连接
omicron         bryanh                  guest1


阅读全文
以上是58脚本为你收集整理的 PostgreSQL 用户名映射全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
  •  PostgreSQL 在Windows上注册事件日志

    PostgreSQL 在Windows上注册事件日志

    要为操作系统注册一个Windows事件日志库,发出这个命令:regsvr32 pgsql_library_directory/pgevent.dll这会创建被事件查看器使...

  •  PostgreSQL 查询规划

    PostgreSQL 查询规划

    19.7.1. 规划器方法配制19.7.2. 规划器代价常量19.7.3. 遗传查询优化19.7.4. 其他规划器选项19.7.1.规划器方法配制这些配置参数...

  •  PostgreSQL WAL内部

    PostgreSQL WAL内部

    WAL是自动被启用的。除了确保满足WAL日志存放所需要的磁盘空间以及一些必要的调优外(参阅第29.4节),管理员无需执行任何操作。...

  •  PostgreSQL 快速设置

    PostgreSQL 快速设置

    首先在postgresql.conf中设置配置选项:wal_level = logical对于一个基础设置来说,其他所需的设置使用默认值就足够了。需要调整...

  •  PostgreSQL 使用描述符区域

    PostgreSQL 使用描述符区域

    35.7.1. 命名 SQL 描述符区域35.7.2. SQLDA 描述符区域一个 SQL 描述符区域是一种处理SELECT、FETCH或者DESCRIBE语句结果的...

  •  PostgreSQL ALLOCATE DESCRIPTOR

    PostgreSQL ALLOCATE DESCRIPTOR

    ALLOCATE DESCRIPTOR — 分配一个 SQL 描述符区域大纲ALLOCATE DESCRIPTOR name描述 ALLOCATE DESCRIPTOR分配一个新的命名 SQL ...

  •  PostgreSQL OPEN

    PostgreSQL OPEN

    OPEN — 打开一个动态游标大纲OPEN cursor_nameOPEN cursor_name USING value [, ... ]OPEN cursor_name USING SQL DESCRIPTOR d...

  • html file value HTML DOM Fileupload value 属性

    html file value HTML DOM Fileupload value 属性

    FileUpload value 属性 Fileupload 对象定义和用法value 属性返回input type="file" 元素选择的文件路径和名称。在IE,Google Chr...

  • iframe onload事件 Frame/IFrame onload 事件

    iframe onload事件 Frame/IFrame onload 事件

    Frame/IFrame onload 事件 Frame/IFrame 对象定义和用法onload 事件在frame或者iframe载入完成后被触发。语法onload="JavaScript...

  • html代码framesetcols指定 HTML DOM Frameset cols 属性

    html代码framesetcols指定 HTML DOM Frameset cols 属性

    Frameset cols 属性 Frameset 对象定义和用法cols 属性可设置或返回框架集中列的数目和尺寸。由逗号分割的像素或百分比列表定义...

© 2024 58脚本 58jiaoben.com 版权所有 联系我们
桂ICP备12005667号-28 Powered by CMS