有人可以解释Postgresql角色,Postgresql用户和Linux用户之间的关系吗?

时间:2016-04-13 15:05:11

标签: postgresql ubuntu roles postgresql-9.3

我正在尝试在Ubuntu 14服务器上设置Postgres 9.3,此时我感觉非常士气低落。我之前使用的是MySQL,所以我对通用数据库概念以及客户端/服务器模型等感到满意。

我从两个用户开始 - 'root'和'sam'(我)。作为'sam'我使用apt-get安装postgresql。这也会创建一个名为'postgres'的第三个用户。

精细。

我被告知要使用postgres你必须以postgres用户身份登录,所以我切换到该帐户。显然这有一个postgres管理员角色(我认为我对角色本身的概念很好),显然所有角色都有一个相同名称的相关数据库(?)。那么现在我有一个名为postgres的Linux帐户,一个名为postgres的角色,以及一个名为postgres的数据库?这一切看起来都是不必要的,但我认为它是有用的,因为我不知道的原因(并不意味着讽刺 - 这通常是事情看起来过于复杂的情况)。

因此,要创建数据库,我是否以postgres身份登录服务器,输入'psql'(不要求密码 - 为什么postgres帐户没有密码?)启动postgres,然后继续从那里?或者我应该创建一个新角色?该角色是否需要自己的Linux用户?该角色应该与我想要创建的数据库同名吗?

我很欣赏这有点混乱,但我的困惑是,我甚至不确定我是否理解这里的基本原理。我想念MySQL。

我一直主要使用DigitalOcean tutorial - 这通常非常好 - 但它并没有真正明白这一点。我还阅读了没有帮助的postgres文档(特别是安装和用户/角色部分),谷歌搜索结果的帮助更少。

这是我回到MySQL安全毯之前的最后希望。有关点击的任何建议吗?

1 个答案:

答案 0 :(得分:3)

  • 操作系统用户名和Postgres数据库用户名不相关;他们生活在独立的宇宙中。
  • 一个例外:如果您通过unix-domain套接字连接来自同一台计算机,并且您没有明确指定用户名,您的操作系统名称也被认为是您的DB用户名。 (在大多数情况下是不正确的)
  • 第二个例外:" postgres" username用作操作系统用户名(文件的所有者,正在运行的进程的uid)作为DBMS超级用户。
  • 注意:" root"对于数据库用户来说,这是一个坏名字。