我是PostgreSQL的新手。
我正在尝试创建一个名为pgdba
的新角色,如下所示......
localhost.localdomain:[/home/postgres]createuser -d -i -l -P -r -s pgdba
new role's password : pgdba
retype password : pgdba
password : postgres
localhost.localdomain:[/home/postgres]psql
Password: postgres
psql (9.0.1)
Type "help" for help.
postgres=# select * from pg_shadow;
usename | usesysid | usecreatedb | usesuper | usecatupd | passwd | valuntil | useconfig
----------+----------+-------------+----------+-----------+-------------------------------------+----------+-----------
postgres | 10 | t | t | t | md53175bce1d3201d16594cebf9d7eb3f9d | |
pgdba | 16385 | t | t | t | md53cd688326933adcdedd77097c95d131d | |
(2 rows)
postgres=# \q
localhost.localdomain:[/home/postgres]psql -U pgdba
Password for user pgdba: pgdba
FATAL: database "pgdba" does not exist
psql: FATAL: database "pgdba" does not exist
我做错了什么?
答案 0 :(得分:3)
查看数据库 pgdba不存在的消息是什么?
默认情况下,PostgreSQL将连接到以当前用户命名的数据库(请参阅the psql docs。由于您没有指定要连接的数据库,因此它尝试连接到数据库名为pgdba
- 不存在。
尝试:
psql -U pgdba postgres
使用角色postgres
连接到pgdba
数据库。
您可能还需要检查pg_hba.conf
(如果您想调整身份验证规则,请参阅docs。
pg_upgrade
,这是一个简单的替代品。有关您缺少的所有修补程序,请参阅release notes。
此外,请考虑使用psql的用户信息函数SELECT
和pg_shadow
,而不是\du
\dg
,这样可以生成更好的格式化和集成信息