将连接表放入其自己的模式中有什么缺点吗?
标题,我可以有几个模式:
- 应用程序
- 用户
- 允许
- 应用程序加入
- 用户权限
如果我使用 sql,我必须包含完整的架构名称,这没什么区别,如果我使用 orm,我可以调用它们的关系函数并完全绕过对架构的了解。这种设置有什么明显的缺点吗?有什么只有在规模化时才会显露出来吗?
将连接表放入其自己的模式中有什么缺点吗?
标题,我可以有几个模式:
如果我使用 sql,我必须包含完整的架构名称,这没什么区别,如果我使用 orm,我可以调用它们的关系函数并完全绕过对架构的了解。这种设置有什么明显的缺点吗?有什么只有在规模化时才会显露出来吗?
我有一个来自 PostgreSQL 15 的备份,我正在尝试将其导入到 PostgreSQL 16 中。版本之间的重大更改之一是“限制 CREATEROLE 的权限及其修改其他角色的能力”
以前,具有 CREATEROLE 权限的角色可以更改任何非超级用户角色的许多方面。此类更改(包括添加成员)现在要求请求更改的角色具有 ADMIN OPTION 权限。
这意味着以前的数据库转储有角色授予命令抛出错误。sql 是通过以下方式获得的pg_dumpall --roles-only
(--no-owner
没有效果):
GRANT role TO user1 GRANTED BY user0;
ERROR: permission denied to grant privileges as role "user0"
DETAIL: The grantor must have the ADMIN option on role "role".
我尝试过使用管理员授予角色,这样当我们将来尝试授予角色时就不会出现此问题,但它会使命令乱序,因此它们在恢复时仍然失败:
GRANT role TO user1 GRANTED BY user0;
GRANT role TO user2 GRANTED BY user0;
GRANT role TO user3 GRANTED BY user0;
GRANT role TO user0 WITH ADMIN OPTION GRANTED BY [me];
GRANTED BY
除了梳理 PostgreSQL 15 中的权限以便导入时没有问题之外,还有什么方法可以省略命令中的 或任何其他方法来解决此问题?
编辑:user0 已经是超级用户
我有一个配置有 pgbackrest 的 postgresql 数据库用于备份。它保留完整备份 7 天:
[global]
repo1-retention-full-type=time
repo1-retention-full=7
我已将 cron 设置为在周日创建完整备份,并每天进行增量备份。这将按预期工作,并在最近的备份超过 7 天后删除完整备份。实际的 crontab 调用一个使用 pgbackrest 命令的脚本,但为了简单起见:
0 0 * * 0 root pgbackrest --type=full backup
0 0 * * 1-6 root pgbackrest backup
我希望将 pgbackrest 配置为每 7 天自动创建一次完整备份,这样我只需要一个 cron 作业:
0 0 * * * root pgbackrest backup
这可能吗,还是我必须在脚本中编写一些 bash 逻辑?
我正在为 PostgreSQL 数据库设置 LDAP 身份验证,并在我的pg_hba.conf
文件中添加了以下内容:
# TYPE DATABASE USER ADDRESS METHOD
host all all all ldap ldapurl="ldap://example.local/dc=example,dc=local?sAMAccountName" ldapbinddn="username" ldapbindpasswd="password"
有用!但现在我想将用户名和密码存储为环境变量,就像我对大多数配置设置所做的那样。我尝试将用户名和密码添加为 $LDAPUSERNAME 或“$LDAPUSERNAME”,但它们没有插入任何值。这可能吗?
注意:数据库将在 docker 容器中运行。如果我必须pg_hba.conf
在启动数据库之前运行一些脚本来处理文件,我可以。