用户名在 psql 命令中被视为数据库?
Username seen as database in psql command?
这个问题类似于 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
The default user name is your operating-system user name, as is the default database name
如果您指定用户名,则该用户名也将被假定为数据库名称的默认值。
这个问题类似于 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
The default user name is your operating-system user name, as is the default database name
如果您指定用户名,则该用户名也将被假定为数据库名称的默认值。