0

我默认使用 apt-get 安装了 postgreSQL,我相信它已经自动为我添加了一个名为“postgres”的用户。

  1. 我只有一个要在 postgres 上排序的数据库,所以为这个数据库创建另一个用户帐户是否有任何意义,或者我应该只保留安装了 postgreSQL“postgres”的那个?

  2. 为我创建的用户帐户 postgres,是否提供了某种默认密码?是否建议我输入自己的密码?

4

2 回答 2

1

编辑:我误解了这个问题,OP 询问的是内部用户,而不是系统用户

原答案:运行服务器的系统用户

作为标准的安全实践,在 linux 机器上运行的大多数服务都有自己的独立用户。在 postgreSQL 服务器被入侵的可能性很小的情况下——要么你犯了错误,要么 postgresql 中存在漏洞,或者其他什么——攻击者只能访问允许运行 postgresql 服务器的用户的资源。如果该用户是 root,您将丢失机器。如果该用户是您的用户,那么您的损失不会那么多。如果该用户是postgres,它对任何东西的访问权限都很小。你会丢失数据库,仅此而已。

所以:

  1. 您只需要一个用于 postgreSQL 服务器的用户,而不管该服务器进程究竟托管的是什么。如果(听起来像是)自动为您创建了一个用户,那么您已经完成了这一步。如果您需要手动创建一个(听起来您不需要),您还必须更改权限,以便新用户只能访问它需要的内容。

  2. 该帐户很可能无法直接登录;如果它有密码,那就是很多随机数据。为了使用该帐户,您需要以 root 身份开始,然后自愿将自己“降​​级”为postgres. 在服务器的情况下,root 以“postgres 的名义”启动服务器。我建议不要管它。

第二个答案:数据库用户

一旦你有一个服务器运行,服务器将保留它自己的一组用户,用于访问数据库。你可以使用的最简单的架构就是让一个拥有完全权限的基本用户做所有事情。虽然这可行,但不建议您在外部托管它。更可取的解决方案是拥有一组用户,类似于操作系统的设置方式:一群用户执行特定任务,一个管理员用户来管理所有任务。那说:

  1. 您不必这样做,但是如果您要在任何地方托管它(如果您不只是将它用于个人事务,而且它是全球可访问的),我会建议具有有限权限的额外用户。

  2. http://archives.postgresql.org/pgsql-admin/2001-10/msg00192.php

    默认没有密码;使用 ALTER USER 创建一个。

    除非 pg_hba.conf 设置为使用密码,否则密码不会生效。如果是这样,并且您没有为 postgres 分配密码,您将无法以 postgres 身份连接。

于 2012-12-09T18:13:41.723 回答
1

重新 1)

在安装过程中创建的默认数据库用户是“超级用户”,出于同样的原因,您不应该以“root”身份进行日常工作,您也不应该在 DBMS 中使用超级用户。所以答案很明确:是的,一定要创建第二个用户。您可以授予该角色对默认数据库(也称为 postgres)的所有权限,这样您就不需要第二个数据库。

有关如何创建用户以及如何授予权限的更多详细信息,请参阅手册:

重新 2)

我不太了解 Linux,但通常应该在安装过程中要求您输入密码。在安装的某个时刻,使用initdb需要密码才能运行的命令初始化新的数据目录。

如果您不知道密码,则登录 postgres linux 帐户,然后您可能psql无需指定密码即可运行。这使您能够重置数据库密码并创建新用户。

有关用户和身份验证的更多详细信息,请参见手册:

于 2012-12-09T18:31:07.723 回答