代码:
postgres=# create role hello;
CREATE ROLE
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
hello | Cannot login | {}
postgres | Superuser, Create role, Create DB, Replication | {}
postgres=# ALTER ROLE hello WITH LOGIN;
ALTER ROLE
postgres=# ALTER ROLE hello WITH CREATEDB;
ALTER ROLE
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
hello | Create DB | {}
postgres | Superuser, Create role, Create DB, Replication | {}
postgres=# ALTER ROLE hello WITH PASSWORD '123';
ALTER ROLE
postgres=# \q
-bash-4.2$ logout
[root@host test_user]# psql -U hello
Password for user hello:
psql: FATAL: database "hello" does not exist
我正在尝试使用hello
在Postgres中创建一个名为CREATE ROLE
的角色,并更改了其登录和创建数据库的权限。但是,当我尝试使用-U
登录时,它会向我显示以上内容。我对-U
的理解是错误的吗?
答案 0 :(得分:1)
默认情况下,Postgres身份验证系统的另一个假设 make是将有一个与角色同名的数据库 用于登录,角色可以访问。
请参阅此处:link了解详情。
创建数据库后,您可以执行以下操作:
sudo -u hello psql
自动登录shell。