使用OS X 10.10,安装了postgreSQL和PostGIS here,psql版本9.3.5。我很难让postgreSQL运行。
我尝试在psql和PostGis上关注OSM教程。但这似乎相当困难......我被困here。 他们建议创建用户:
sudo -u postgres createuser christoph
这对我不起作用。我创建了这样的用户:
$ sudo -u _postgres createuser -U postgres christoph
这没有任何问题。然后我尝试了这个:
$ sudo -u _postgres createdb --encoding=UTF8 --owner=christoph gis
> cannot connect to template1: FATAL: role "_postgres" does not exist
如果我刚刚创建了一个角色,_postgres
怎么可能不存在?!
我也不明白为什么
$ createdb mydb
> -bash: createdb: command not found
虽然不起作用 我添加了路径:
$ export PSQL_DIR=/usr/local/pgsql/bin/
$ export PATH="$PSQL_DIR:$PATH"
之前。
执行如下命令:
$ /usr/local/pgsql/bin/createdb mydb
> createdb: cannot create database: ERROR: permission denied to create database
我与安装了psql的用户进行了对话... 那有联系吗?!
答案 0 :(得分:3)
很容易将系统用户(存储在/etc/passwd
)与 Postgres角色(存储在数据库群集中)混淆。
在第一个命令中,您提到两种类型的用户:
sudo -u _postgres
表示“使用系统用户_postgres
执行以下命令”-U postgres
表示“连接到具有角色postgres
的Postgres群集”但是,在下一个命令中:
sudo -u _postgres createdb --encoding=UTF8 --owner=christoph gis
您指定相同的sudo -u _postgres
,但是缺少实际Postgres命令的-U
参数(您说您希望christoph拥有新数据库,但您没有说“我是christoph” “)。
Postgres命令行工具的默认行为是猜测Postgres角色名称与系统用户名相同。由于系统用户名为_postgres
(带有前导下划线),而Postgres角色名为postgres
(没有前导下划线),因此该假设失败,您无法连接。