有人能解释一下Postgresql角色、Postgresql用户和Linux用户之间的关系吗?

11

我正试图在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教程进行操作-通常非常好-但它并没有真正澄清任何问题。我还阅读了postgres文档(特别是安装和用户/角色部分),但没有帮助,而针对此问题的谷歌搜索结果甚至更加无用。
这是我回到MySQL安全毯之前的最后一次尝试。有什么建议可以让我明白吗?
1个回答

7
  • 操作系统用户名和Postgres数据库用户名没有关系,它们存在于不同的宇宙中。
  • 一个例外:如果您通过unix域套接字从同一台机器连接,并且您没有显式指定用户名,则假定您的操作系统名称也是您的DB用户名。(在大多数情况下这是不正确的)
  • 第二个例外: "postgres"用户名既用作操作系统用户名(文件所有者,运行进程的uid),也用作DBMS超级用户。
  • 注意:"root"是一个糟糕的DB用户名称。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接