在psql命令中,用户名被视为数据库?

4
这个问题与在shell脚本中使用psql创建数据库,以用户名作为数据库名类似,但由于没有被接受的答案,我在这里再次提出。我已经创建了一个用户名为myuser,密码为mypassword的用户:
> psql
psql (11.5)
Type "help" for help.

kurt=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 kurt      | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 myuser    |                                                            | {}

kurt=# 

然而,如果我运行 psql --username=myuser,会报错:database "myuser" does not exist

> psql --username=myuser
psql: FATAL:  database "myuser" does not exist

我对这个错误信息感到有些困惑,因为根据 psql --help 的说明,这是一个用户名,而不是数据库名:

Connection options:
  -h, --host=HOSTNAME      database server host or socket directory (default: "local socket")
  -p, --port=PORT          database server port (default: "5432")
  -U, --username=USERNAME  database user name (default: "kurt")
  -w, --no-password        never prompt for password
  -W, --password           force password prompt (should happen automatically)

你知道我做错了什么吗?这是我正在使用的psql版本:

> psql --version
psql (PostgreSQL) 11.5

1
@wildplasser在那个问题的评论中的回答不完美吗? - Bergi
是的,感谢您指出这一点。因此,如果用户名与数据库名称不同,则必须明确指定后者,例如在此示例中使用 psql --username=myuser kurt(其中 kurt 是数据库名称)。 - Kurt Peek
2个回答

2

手册中的引用

默认用户名为您的操作系统用户名,数据库名称也是默认的。

如果您指定了用户名,则该用户名也被假定为数据库名称的默认值。


默认用户名数据库的密码是什么?我尝试了我的Windows密码,但它没有起作用。 - user11908262

0
创建新用户后,首先您需要使用postgres用户登录,并创建与您新创建的用户类似的新数据库。例如:如果我的新用户是“david”,我必须使用posgtres用户创建名为“david”的数据库。完成此操作后,您现在可以使用您创建的新用户登录。

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