1

我是 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

我究竟做错了什么?

4

1 回答 1

3

看看消息是如何显示数据库pgdba 不存在?

默认情况下,PostgreSQL 将连接到以当前用户命名的数据库(请参阅psql 文档。由于您没有指定要连接的数据库,因此它正在尝试连接到名为pgdba- 的数据库,但该数据库不存在。

尝试:

psql -U pgdba postgres

postgres使用角色连接到数据库pgdba

您可能还需要检查pg_hba.conf(如果您希望调整身份验证规则,请参阅文档。

顺便说一句,您正在运行具有已知错误的过时 PostgreSQL 版本。请更新到 9.0.8,这是 9.0 系列中的最新补丁版本。您不需要转储和重新加载您的数据库或使用pg_upgrade它,它是一个简单的替代品。有关您缺少的所有修复,请参阅发行说明。

此外,考虑使用 psql 的用户信息函数和,而不是SELECTing from ,这会产生更好的格式化和集成信息。pg_shadow\du\dg

于 2012-08-08T01:49:19.873 回答