PostgreSQL";“非法组名”;

PostgreSQL";“非法组名”;,postgresql,homebrew,chown,Postgresql,Homebrew,Chown,我正在尝试使用本教程创建PostgreSQL数据库: Postgres部分位于页面下方的2/3处。 安装自制软件并命令brew安装postgresql 我们通过以下方式创建数据库: sudo mkdir -p /usr/local/pgsql/data sudo chown postgres:postgres /usr/local/pgsql/data sudo su postgres initdb -D /usr/local/pgsql/data createuser `whoami` 当

我正在尝试使用本教程创建PostgreSQL数据库:

Postgres部分位于页面下方的2/3处。 安装自制软件并命令
brew安装postgresql

我们通过以下方式创建数据库:

sudo mkdir -p /usr/local/pgsql/data
sudo chown postgres:postgres /usr/local/pgsql/data
sudo su postgres
initdb -D /usr/local/pgsql/data
createuser `whoami`
当我做
sudo chown postgres:postgres/usr/local/pgsql/data

它返回错误

chown: postgres: illegal group name

这是因为,据我所知,我还没有创建用户或组。有没有一个简单的,一行命令,我可以做修改这一点,而不经过一个完全不同的教程?本教程忘了什么吗?

这是一个unix问题。有一个名为/etc/group的文件,其中包含系统中的所有组。创建unix用户postgres时,应该同时创建组postgres,并使postgres用户属于postgres组。该关系位于/etc/passwd文件中。因此,如果查看/etc/passwd文件:

grep postgres /etc/passwd
您应该看到如下内容:

postgres:x:109:119:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash
在我的例子中,109是postgres用户id。119是postgres组id,我可以使用以下命令看到:

grep postgres /etc/group
就我而言,我看到:

postgres:x:119:
我看了教程“brew安装postgresql”,不管出于什么原因,它创建的是postgres用户,而不是postgres组。创建组只需在/etc/group文件中添加一行名为postgres的代码,该代码具有其他组尚未使用的唯一编号。通常有一个unix实用程序,具体取决于unix的风格,如:

addgroup postgres
这将为您创建组。如果没有,只需使用您喜爱的编辑器将该行添加到文件中即可

您的/etc/passwd文件将有一个组引用(第二个数字,如上所述,我的是119)。如果您使用了您拥有的号码,您可以在/etc/group文件中查看哪个组已分配给您的postgres用户。不过没关系,编辑/etc/passwd文件(许多unix版本都有帮助编辑文件的vipw)并转到带有postgres的行,将组号更改为新创建的组号。保存它,然后继续学习教程

顺便说一下,如果用户也没有创建,您可以使用以下命令创建用户和组:

adduser postgres
要完全删除postgres用户并重新开始,您可以:

deluser postgres
adduser postgres
同样,这些命令只是示例,并不适用于所有类型的unix。我的例子是linux(特别是ubuntu 12)。小心。祝你好运

-g

根据-

“自制公式不会创建“postgres”用户,这在目前是很常见的。开箱即用,您使用运行brew安装时使用的同一用户帐户对DB进行身份验证。在您的开发计算机上保留这种方式是完全可以接受的。如果这是一个生产环境,请不要忘记更改。”


您可以跳到下一步:
initdb-D/usr/local/pgsql/data

谢谢。看起来我已经创建了该组,但它没有返回
非法用户名
adduser
返回未找到的
命令
,但它可能是
createuser
?[link]()此返回
错误:角色“juliushamilton”已存在。
是否应创建新用户名…?*但现在返回^no,不是createuser。这是一个postgres命令。您与unix用户和组之间存在问题。这些不是postgres用户和组(角色)。