当前位置: 首页 > 知识库问答 >
问题:

“postgres”是PostgreSQL的默认和特殊用户吗?

唐宏壮
2023-03-14

> 第21章。数据库角色列出了PostgreSQL的默认角色。但是我在那里没有找到用户< code>postgres,它是在PostgreSQL中默认创建的。< code>postgres是默认角色吗?是手册漏了还是我理解错了?

在PostgreSQL中,< code>postgres是一个特殊用户,还是一个像手工创建的普通用户?PostgreSQL服务器需要用户< code>postgres吗?移除它会给服务器带来一些麻烦还是其他什么?

psql中运行的以下两个命令提供了默认角色或用户名,它们都包含< code>postgres。它们为什么不同?

# select usename from pg_catalog.pg_user;

 usename
----------
 postgres
(1 row)

# select rolname from pg_catalog.pg_roles;

       rolname
----------------------
 postgres
 pg_monitor
 pg_read_all_settings
 pg_read_all_stats
 pg_stat_scan_tables
 pg_signal_backend
(6 rows)

共有2个答案

尉迟浩思
2023-03-14

< code>postgres是安装后第一个可用的用户。是超级用户。但是,您可以定义自己的超级用户,这些用户将拥有与< code>postgres用户相同的权限。

用户是能够登录的角色。

没有登录权限的角色用于各种系统级别的使用,有时也用于通过继承来管理权限改造规则(例如,您可能拥有一个角色analyst和一个用户hal,该用户被授予analyst角色的成员资格)

因此pg_user只返回那些能够登录到数据库的角色。

仲孙默
2023-03-14

>

  • 后记不是默认角色。

    使用< code>initdb创建PostgreSQL数据库集群时,可以使用< code>-U选项指定安装超级用户的名称。如果忽略该选项,超级用户的名称将与您正在使用的操作系统用户名相同。

    由于习惯上由操作系统用户帖子运行 initdb PostgreSQL,因此超级用户通常也被称为 postgres,但这绝不是必需的。

    postgres只是一个普通的超级用户,就像任何其他用户一样。

    您将很难删除它,因为它拥有所有的系统对象,并且您不能轻易地修改这些对象。建议你不要尝试。

    pg_read_all_settings和其他角色不会显示在pg_user中,因为它们不是登录角色。

  •  类似资料:
    • 在Connection.php第647行中: SQLSTATE[42000]:语法错误或访问冲突: 1071指定的键太长;最大键长度为1000字节(SQL:更改表添加uni que()) 在Connection.php第449行: SQLSTATE[42000]:语法错误或访问冲突:1071指定的密钥太长;最大密钥长度为1000字节。 我怎样才能解决这个问题?? 当我想在CMD中迁移默认迁移时,会

    • https://stackoverflow.com/a/22487113/4416169在下面的答案中,我们可以看到详细的代码: https://stackoverflow.com/a/35652391/4416169在这里,我们可以看到如何选择模板: 选择模板专门化分为五个步骤: 以主模板声明为例 首先,我知道SFINAE将负责使用std::enable\u if排除结构 模板 我们现在知道,当

    • 我正在开发一个开源应用程序,该应用程序将后绿色SQL作为其默认DBMS。现在,当我在我的系统上安装它时,它的配置是为了让PostgreSQL也随它一起安装。 我的问题是访问已安装的PostgreSQL数据库。安装期间创建的数据库名为< code>iviewdb。 我在许多论坛上读到默认超级用户是,但当我尝试通过命令提示符使用此用户名访问数据库时,它会提示我输入我没有的密码。 我想知道Postgre

    • 我正在尝试实现一段代码,检查hashed_password和user_name是否匹配。下面的代码首先检查用户名是否有效,如果有效,代码将检查密码是否与用户名匹配。但是,这是一段代码不起作用。我可以从数据库输入正确的用户名和相应的正确密码,它会显示正确的消息。但是如果我从数据库输入正确的用户名,但密码不正确,它仍然会显示。感谢任何帮助!

    • 问题内容: 然后,我想更改用户的默认架构(用户为) 我这样做:( 查询成功返回,但没有结果)。 当我尝试给出错误 虽然效果很好。 尝试为用户更改默认架构有什么问题? 问题答案: 我认为您需要重新登录。随着 你改变 运行时配置变量的会话默认值 同样来自 手册: 特定于角色的变量设置仅在登录时生效; 但是不要将更改应用于当前会话。如果要立即更改,请使用: 它将在会话级别更改路径

    • 我使用以下命令创建了docker postgis容器: 这为/var/lib/docker/volumes/[some\u very\u long\u id]/\u data中的数据创建了一个卷 现在我需要将此卷移动到其他地方以方便我的外包承包商的备份......并且不知道如何做到这一点。我有点迷路了,因为似乎有不同的替代方案,例如数据卷和fs挂载。 那么今天正确的做法是什么?如何将我当前的数据目