【问题标题】:Create user in PostgreSQL sudo: unknown user在 PostgreSQL sudo 中创建用户:未知用户
【发布时间】:2021-06-20 01:49:30
【问题描述】:

我正在尝试在 Ubuntu 20.04 上安装的 PostgreSQL 中创建一个新用户:

$ sudo -u postgres createuser --superuser tommy

但是当我尝试使用该用户创建数据库时,它显示未知用户:

$ sudo -u tommy createdb tommy_db
sudo: unknown user: tommy
sudo: unable to initialize policy plugin

我的想法是我已经知道有 UNIX 用户和 PostgreSQL 用户,我不知道我是否必须先创建一个 UNIX 用户 tommy。

想借帖子问一下postgreSQL中的postgreSQL用户和UNIX用户在数据库管理方面有什么区别。

PD:如果我在 plsql 中使用 /du 列出用户,我可以看到创建的用户 tommy:

 Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
 tommy     | Superuser, Create role, Create DB                          | {}
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

【问题讨论】:

  • 您根本不需要 unix 用户。以超级用户身份进入并create role tommy login password 'xyz' superuser
  • "postgreSQL 中的 postgreSQL 用户和 UNIX 用户有什么区别" - 一个是针对操作系统进行身份验证,另一个是需要针对操作系统进行身份验证数据库。这与您的 Linux 用户和您用于登录 Stackoverflow 的用户帐户之间的区别相同。
  • @a_horse_with_no_name 我当然知道,但为什么 UNIX 系统中有用户 postgres?
  • 用于运行服务,因为以root运行Postgres服务存在安全风险

标签: postgresql ubuntu unix psql


【解决方案1】:

您的系统可能默认使用简单的“对等”身份验证。这是基于 Linux 的包管理器在为您创建数据库时使用的常见默认设置。

要继续使用该设置,是的,您需要将“tommy”设置为 Linux 用户。或者,您必须编辑 pg_hba.conf 以选择不同的方法,例如 md5(密码)或 gss(kerberos),或者添加一个身份映射以及“peer”来描述允许哪些操作系统用户以哪个身份登录数据库用户。

Linux 用户和 PostgreSQL 用户之间的唯一连接是使用对等身份验证创建的。

【讨论】:

    猜你喜欢
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 2018-07-28
    • 2023-03-11
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 2018-06-04
    相关资源
    最近更新 更多