2012-08-08 61 views
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 

我在做什么错?

回答

3

看看这条消息是怎么回事数据库 pgdba不存在?

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

尝试:

psql -U pgdba postgres 

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

您可能还需要检查pg_hba.conf(见docs如果你想调整认证规则。

顺便说一下,你正在运行一个过时的已知错误的PostgreSQL版本。请更新至9.0.8系列中的最新补丁版本。你不需要转储和重新加载你的数据库,或者使用pg_upgrade这是一个简单的替代方案。请参阅release notes了解您所缺失的所有修复程序。

而且,而非SELECTpg_shadow荷兰国际集团,可以考虑使用psql的用户信息的功能\du\dg,从而产生更好的格式化和综合信息。