在postgresql中:CREATE ROLE工作,但createuser不工作

jmo0nnb3  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(4)|浏览(119)

我是PostgreSQL的新手,正在学习this教程。我可以很好地创建角色,但是当我尝试使用createuserdropuser命令时,它什么都不做,也没有创建或删除新用户。我试着在结尾使用和不使用分号,前者给出了一个语法错误,后者没有任何作用。

postgres-# createuser joe;
ERROR:  syntax error at or near "createuser"
LINE 1: createuser 
        ^
postgres=# ;
postgres=# createuser joe;
ERROR:  syntax error at or near "createuser"
LINE 1: createuser joe;
        ^
postgres=# createuser joe
postgres-# \du
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 admin     | Superuser, Create DB                                       | {}
 john      | Superuser, Create role, Create DB, Replication             | {}
 guest     |                                                            | {}
 guest3    |                                                            | {}
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

我也试过这个:

createuser --interactive joe

这也没有做任何事情。
如何正确使用createuser?我使用以下版本。

postgres (PostgreSQL) 11.1
f1tvaqid

f1tvaqid1#

psql工具中,您需要输入SQL命令。要从SQL创建用户,需要使用create user
本教程可能正在运行命令行实用程序createuser(而不是SQL命令)
要了解原因:

postgres=# createuser joe

什么都没做,看:In psql, why do some commands have no effect?

13z8s7eq

13z8s7eq2#

我认为你的命令之间需要一个空格,如下所示:

CREATE USER youruser WITH ENCRYPTED PASSWORD 'yourpass';
GRANT ALL PRIVILEGES ON DATABASE yourdbname TO youruser;
6bc51xsx

6bc51xsx3#

命令createuser需要在控制台(bash)中运行。不需要在psql中做。示例:

createuser -h localhost -p 5432 joe
8fsztsew

8fsztsew4#

由postgres用户在上面的控制台中创建:

createuser joe

相关问题