PostgreSQL“非法组名”

时间:2014-05-21 04:03:49

标签: postgresql homebrew chown

我正在尝试使用本教程创建PostgreSQL数据库: http://tutorials.jumpstartlab.com/topics/environment/environment.html

Postgres部分可以在页面下方的2/3处找到。 安装Homebrew并命令brew install 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

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

2 个答案:

答案 0 :(得分:2)

根据 - http://russbrooks.com/2010/11/25/install-postgresql-9-on-os-x

" Homebrew公式不会创建" postgres"用户,这是至关重要的。开箱即用,您使用运行brew install的同一用户帐户对数据库进行身份验证。将它保留在Dev机器上是完全可以接受的。如果这是一个生产环境,请不要忘记改变它。"

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

答案 1 :(得分:0)

这是一个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 install postgresql,无论出于何种原因,它创建了postgres用户而不是postgres组。创建组只是在名为postgres的/ etc / group文件中添加一行,其中另一个组尚未使用UNIQUE编号。通常有一个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