我正在尝试使用本教程创建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
这是因为,据我所知,我还没有创建用户或组。是否有一个简单的单行命令可以修改它,而不需要完全不同的教程?本教程是否遗忘了什么?
答案 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