【问题标题】:Username seen as database in psql command?用户名在 psql 命令中被视为数据库?
【发布时间】:2023-04-06 06:20:02
【问题描述】:

这个问题与create database using psql in shell script takes username as db name 类似,但由于没有可接受的答案,我在这里再次询问。我创建了一个用户名 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

【问题讨论】:

  • 是的,感谢您指出这一点。因此,如果用户名与数据库名称不同,则必须明确指定后者,如本例中的psql --username=myuser kurt(其中kurt 是数据库名称)。

标签: postgresql psql


【解决方案1】:

Quote from the manual

默认用户名是您的操作系统用户名,默认数据库名也是如此

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

【讨论】:

    猜你喜欢
    • 2013-07-12
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    • 2015-06-17
    相关资源
    最近更新 更多