云栖社区Java、Redis、MongoDB运营小编,有意合作请联系钉钉:15810436147
23.1. 区域支持 23.1.1. 概述 23.1.2. 行为 23.1.3. 问题 区域支持指的是应用遵守文化偏好的问题,包括字母表、排序、数字格式等。PostgreSQL使用服务器操作系统提供的标准 ISO C 和POSIX的区域机制。
第 22 章 管理数据库 目录 22.1. 概述 22.2. 创建一个数据库 22.3. 模板数据库 22.4. 数据库配置 22.5. 销毁一个数据库 22.6. 表空间 每个正在运行的PostgreSQL服务器实例都管理着一个或多个数据库。
22.6. 表空间 PostgreSQL中的表空间允许数据库管理员在文件系统中定义用来存放表示数据库对象的文件的位置。一旦被创建,表空间就可以在创建数据库对象时通过名称引用。 通过使用表空间,管理员可以控制一个PostgreSQL安装的磁盘布局。
22.5. 销毁一个数据库 数据库用DROP DATABASE命令删除: DROP DATABASE name; 只有数据库的拥有者或者超级用户才可以删除数据库。删除数据库会移除其中包括的所有对象。
22.4. 数据库配置 回顾一下第 19 章,PostgreSQL服务器提供了大量的运行时配置变量。你可以为其中的许多设置数据库相关的默认值。 例如,如果由于某种原因,你想禁用指定数据库上的GEQO优化器,正常情况下你不得不对 所有数据库禁用它,或者确保每个连接的客户端小心地发出了SET geqo TO off。
22.3. 模板数据库 CREATE DATABASE实际上通过拷贝一个已有数据库进行工作。默认情况下,它拷贝名为template1的标准系统数据库。所以该数据库是创建新数据库的“模板”。 如果你为template1数据库增加对象,这些对象将被拷贝到后续创建的用户数据库中。
22.2. 创建一个数据库 为了创建一个数据库,PostgreSQL服务器必须启动并运行(见第 18.3 节)。 数据库用 SQL 命令CREATE DATABASE创建: CREATE DATABASE name; 其中name遵循SQL标识符的一般规则。
22.1. 概述 一个数据库是一些SQL对象(“数据库对象”)的命名集合。通常每个数据库对象(表、函数等) 属于并且只属于一个数据库(不过有几个系统表如pg_database属于整个集簇并且对集簇中的每个数据库都是可访问的)。
第 21 章 数据库角色 目录 21.1. 数据库角色 21.2. 角色属性 21.3. 角色成员关系 21.4. 删除角色 21.5. 默认角色 21.6. 函数和触发器安全性 PostgreSQL使用角色的概念管理数据库访问权限。
21.6. 函数和触发器安全性 函数和触发器允许用户在后端服务器中插入代码,其他用户不会注意到这些代码的执行。因此,两种机制允许用户相对容易地为其他人设置“特洛伊木马”。唯一真正的保护是收紧对能定义函数的用户的控制。
21.5. 默认角色 PostgreSQL提供一组默认角色, 他们可以访问特定的、通常需要的特权功能和信息。 管理员可以将这些角色 GRANT 给用户和/或其环境中的其他角色, 为这些用户提供对指定功能和信息的访问权限。
21.4. 删除角色 由于角色可以拥有数据库对象并且能持有访问其他对象的特权,删除一个角色 常常并非一次DROP ROLE就能解决。任何被该用户所拥有 的对象必须首先被删除或者转移给其他拥有者,并且任何已被授予给该角色的 权限必须被收回。
21.3. 角色成员关系 把用户分组在一起来便于管理权限常常很方便:那样,权限可以被授予一整个组或从一整个组回收。在PostgreSQL中通过创建一个表示组的角色来实现,并且然后将在该组角色中的成员关系授予给单独的用户角色。
21.2. 角色属性 一个数据库角色可以有一些属性,它们定义角色的权限并且与客户端认证系统交互。 login privilege 只有具有LOGIN属性的角色才能被用于一个数据库连接的初始角色名称。
21.1. 数据库角色 数据库角色在概念上已经完全与操作系统用户独立开来。事实上可能维护一个对应关系会比较方便,但是这并非必需。数据库角色在一个数据库集簇安装范围内是全局的(而不是独立数据库内)。
第 20 章 客户端认证 目录 20.1. pg_hba.conf文件 20.2. 用户名映射 20.3. 认证方法 20.3.1. 信任认证 20.3.2. 口令认证 20.3.3. GSSAPI 认证 20.
20.4. 认证问题 认证失败以及相关的问题通常由类似下面的错误消息显示: FATAL: no pg_hba.conf entry for host "123.123.123.123", user "andym", database "testdb" 这条消息最可能出现的情况是你成功地联系了服务器,但它不愿意和你说话。
20.3. 认证方法 20.3.1. 信任认证 20.3.2. 口令认证 20.3.3. GSSAPI 认证 20.3.4. SSPI 认证 20.3.5. Ident 认证 20.3.6. Peer 认证 20.3.7. LDAP 认证 20.3.8. RADIUS 认证 20.3.9. 证书认证 20.3.10. PAM 认证 20.3.11. BSD 认证 下列小节更详细地描述认证方法。
20.2. 用户名映射 当使用像 Ident 或者 GSSAPI 之类的外部认证系统时,发起连接的操作系统用户名可能不同于要使用的数据库用户(角色)。在这种情况下,一个用户名映射可被用来把操作系统用户名映射到数据库用户。
20.1. pg_hba.conf文件 客户端认证是由一个配置文件(通常名为pg_hba.conf并被存放在数据库集簇目录中)控制(HBA表示基于主机的认证)。在initdb初始化数据目录时,它会安装一个默认的pg_hba.conf文件。
第 19 章 服务器配置 目录 19.1. 设置参数 19.1.1. 参数名称和值 19.1.2. 通过配置文件影响参数 19.1.3. 通过SQL影响参数 19.1.4. 通过 Shell 影响参数 19.
19.18. 短选项 为了方便起见,系统中还为一些参数提供了单字母的命令行选项开关。它们在表 19.2中描述。其中一些选项是由于历史原因而存在,并且它们作为一个单字母选项存在并不表示它们会被大量使用。
19.17. 开发者选项 下面的参数目的是用在PostgreSQL源代码上, 并且在某些情况下可以帮助恢复严重损坏了的数据库。在一个生产数据库中没有理由使用它们。同样,它们被从例子postgresql.conf文件中排除。
19.16. 自定义选项 这个特性被设计用来由附加模块向PostgreSQL添加通常不为系统知道的参数(例如过程语言)。这允许使用标准方法配制扩展模块。 自定义选项有两部分名称:一个扩展名,然后是一个句点,再然后是正确的参数名,就像 SQL 中的合格名称。
19.15. 预置选项 下列“参数”是只读的,它们是在编译或安装PostgreSQL时决定的。同样,它们被排除在postgresql.conf文件例子之外。这些选项报告特定应用可能感兴趣的多种PostgreSQL行为,特别是管理前端相关的行为。
19.14. 错误处理 exit_on_error (boolean) 如果为真,任何错误将中止当前会话。默认情况下,这个值被设置为假,这样只有 FATAL 错误(致命)将中止会话。 restart_after_crash (boolean) 当被设置为真(默认值)时,PostgreSQL将在一次后端崩溃后自动重新初始化。
19.13. 版本和平台兼容性 19.13.1. 以前的 PostgreSQL 版本 19.13.2. 平台和客户端兼容性 19.13.1. 以前的 PostgreSQL 版本 array_nulls (boolean) 这个参数控制数组输入解析器是否把未用引号的NULL识别为一个空数组元素。
19.12. 锁管理 deadlock_timeout (integer) 这是进行死锁检测之前在一个锁上等待的总时间(以毫秒计)。死锁检测相对昂贵,因此服务器不会在每次等待锁时都运行这个它。我们乐观地假设在生产应用中死锁是不常出现的,并且只在开始检测死锁之前等待一会儿。
19.11. 客户端连接默认值 19.11.1. 语句行为 19.11.2. 区域和格式化 19.11.3. 共享库预载入 19.11.4. 其他默认值 19.11.1. 语句行为 search_path (string) 这个变量指定当一个对象(表、数据类型、函数等)被用一个无模式限定的简单名称引用时,用于进行搜索该对象的模式顺序。
19.10. 自动清理 这些设置控制自动清理特性的行为。 详情请见第 24.1.6 节。请注意在每个表基础上可以重写这些设置; 参阅存储参数。 autovacuum (boolean) 控制服务器是否运行自动清理启动器后台进程。
19.9. 运行时统计数据 19.9.1. 查询和索引统计收集器 19.9.2. 统计监控 19.9.1. 查询和索引统计收集器 这些参数控制服务器范围的统计数据收集特性。当统计收集被启用时,被产生的数据可以通过pg_stat和pg_statio系统视图族访问。
19.8. 错误报告和日志 19.8.1. 在哪里做日志 19.8.2. 什么时候记录日志 19.8.3. 记录什么到日志 19.8.4. 使用 CSV 格式的日志输出 19.8.5. 进程标题 19.8.1. 在哪里做日志 log_destination (string) PostgreSQL支持多种方法来记录服务器消息,包括stderr、csvlog和syslog。
19.7. 查询规划 19.7.1. 规划器方法配制 19.7.2. 规划器代价常量 19.7.3. 遗传查询优化 19.7.4. 其他规划器选项 19.7.1. 规划器方法配制 这些配置参数影响查询优化器选择查询计划的暴力方法。
19.6. 复制 19.6.1. 发送服务器 19.6.2. 主服务器 19.6.3. 后备服务器 19.6.4. 订阅 这些设置控制内建流复制特性(见第 26.2.5 节)的行为。服务器将可以是主控服务器或后备服务器。
19.5. 预写式日志 19.5.1. 设置 19.5.2. 检查点 19.5.3. 归档 参阅第 30.4 节获取调节这些设置的额外信息。 19.5.1. 设置 wal_level (enum) wal_level决定多少信息写入到 WAL 中。
19.3. 连接和认证 19.3.1. 连接设置 19.3.2. 安全和认证 19.3.1. 连接设置 listen_addresses (string) 指定服务器在哪些 TCP/IP 地址上监听客户端连接。
19.2. 文件位置 除了已经提到过的postgresql.conf文件之外,PostgreSQL还使用另外两个手工编辑的配置文件,它们控制客户端认证(其使用在第 20 章中讨论)。默认情况下,所有三个配置文件都存放在数据库集簇的数据目录中。
19.1. 设置参数 19.1.1. 参数名称和值 19.1.2. 通过配置文件影响参数 19.1.3. 通过SQL影响参数 19.1.4. 通过 Shell 影响参数 19.1.5. 管理配置文件内容 19.1.1. 参数名称和值 所有参数名都是大小写不敏感的。
第 18 章 服务器设置和操作 目录 18.1. PostgreSQL用户账户 18.2. 创建一个数据库集簇 18.2.1. 二级文件系统的使用 18.2.2. 网络文件系统的使用 18.3.
18.11. 在Windows上注册Event Log 要为操作系统注册一个Windows 事件日志库,发出这个命令: regsvr32 pgsql_library_directory/pgevent.dll 这会创建被事件查看器使用的注册表项,默认事件源命名为PostgreSQL。
18.10. 使用SSH隧道的安全 TCP/IP 连接 可以使用SSH来加密客户端和PostgreSQL服务器之间的网络连接。如果处理得当,这将提供一个足够安全的网络连接,即使是对那些无 SSL 能力的客户端。
18.9. 用 SSL 进行安全的 TCP/IP 连接 18.9.1. 使用客户端证书 18.9.2. SSL 服务器文件用法 18.9.3. 创建自签名的证书 PostgreSQL有一个对使用SSL连接加密客户端/服务器通讯的本地支持,它可以增加安全性。
18.8. 加密选项 PostgreSQL提供了几个不同级别的加密, 并且在保护数据不会因为数据库服务器偷窃、不道德的管理员、不安全网络等因素而泄漏方面 提供很高的灵活性。加密可能也是保护一些诸如医疗记录或财务交易等敏感数据所要求的。
18.7. 阻止服务器欺骗 服务器在运行时,它不可能让恶意用户取代正常的数据库服务器。然而,当服务器关闭时, 一个本地用户可以通过启动它们自己的服务器来欺骗正常的服务器。行骗的服务器可以读取客户端发送的密码和查询语句, 但是不会返回任何数据,因为PGDATA这个目录是安全的(它有目录权限)。
18.6. 升级一个PostgreSQL集簇 18.6.1. 通过pg_dumpall升级数据 18.6.2. 通过pg_upgrade升级数据 18.6.3. 通过复制升级数据 本节讨论如何把你的数据库数据从一个PostgreSQL发行升级到一个更新的发行。
18.5. 关闭服务器 有几种关闭数据库服务器的方法。通过给postgres进程发送不同的信号,你就可以控制关闭类型。 SIGTERM 这是智能关闭模式。在接收SIGTERM后, 服务器将不允许新连接,但是会让现有的会话正常结束它们的工作。
18.4. 管理内核资源 18.4.1. 共享内存和信号量 18.4.2. systemd RemoveIPC 18.4.3. 资源限制 18.4.4. Linux 内存过量使用 18.4.5. Linux 大页面 PostgreSQL某些时候会耗尽操作系统的各种资源限制,当同一个系统上运行着多个拷贝的服务器或在一个非常大的安装中时尤其如此。
18.2. 创建一个数据库集簇 18.2.1. 二级文件系统的使用 18.2.2. 网络文件系统的使用 在你能做任何事情之前,你必须在磁盘上初始化一个数据库存储区域。我们称之为一个数据库集簇(SQL标准使用的术语是目录集簇)。
18.1. PostgreSQL用户账户 和对外部世界可访问的任何服务器守护进程一样,我们也建议在一个独立的用户账户下运行PostgreSQL。这个用户账户应该只拥有被该服务器管理的数据,并且应该不能被其他守护进程共享(例如,使用用户nobody是一个坏主意)。
第 17 章 在Windows上从源代码安装 目录 17.1. 使用Visual C++或Microsoft Windows SDK构建 17.1.1. 要求 17.1.2. 针对64位Windows的特殊考虑 17.1.3. 构建 17.1.4. 清理和安装 17.1.5. 运行回归测试 17.1.6. 构建文档 对于大部分用户,推荐下载Windows的二进制发布,它在PostgreSQL 的网站上作为一个图形化安装包可供下载。