创建角色和数据库PostgreSQL不起作用。

9

首先我运行以下命令:

sudo su _postgres

然后我运行以下命令:

create role mixeddrinks with createdb login password 'password1'

但它返回的是:
-bash: create: command not found

我不太熟悉终端和PostgreSQL,所以不确定我做错了什么。我正在尝试创建一个角色和一个数据库。

1个回答

15

首先我运行命令sudo su _postgres,然后我运行命令create role mixeddrinks with createdb login password 'password1'

您混淆了shell命令和psql命令行。

如果您想使用SQL,您需要使用psql命令。 sudo su _postgres是获取_postgres用户的Unix命令Shell的低效方式。它不会给您提供SQL shell。您可以从Unix命令Shell运行类似psqlcreateuser等Unix命令。您可以通过提示符来判断是否在命令shell中,提示符看起来像:

postgres$ 

如果您想要一个SQL shell,这样您就可以运行像CREATE USER等命令,则需要运行psql。如果您想要一个超级用户的SQL shell,那么应该是这样的:

sudo -u _postgres psql

这将给你一个提示,类似于:

postgres=#

在这里你可以运行SQL命令。请记住,SQL命令以分号结束。

postgres=# create role mixeddrinks with createdb login password 'password1';

1
每当我运行 'sudo -u _postgres psql' 命令时,它会抛出一个错误,说“无法识别当前目录:权限被拒绝 psql: 致命错误: 角色“_postgres”不存在”。 - Tyler
1
@TylerRice 啊。我想把为Mac OS X打包PostgreSQL的所有人都放在一个房间里,让他们在那里解决问题,直到只有一个幸存者为止。在您特定的奇怪PostgreSQL包装中使用sudo -u _postgres psql -U postgres - Craig Ringer
1
仍然抛出相同的错误... 如果你不知道如何修复它,我会接受你的答案,因为它确实回答了原始问题,我会再提一个新问题。 - Tyler
@TylerRice 如果您能链接到您的后续问题,那将非常好,因为我遇到了相同的问题。 - YPCrumble
4
@TylerRice 你尝试过简单地输入 psql postgres 或者 sudo psql postgres 吗?对我来说,这最终解决了问题。 - YPCrumble
如果您仍然遇到问题,请查看此答案http://stackoverflow.com/a/32025141/3583139 - howMuchCheeseIsTooMuchCheese

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