创造新角色?

时间:2012-08-08 01:08:51

标签: postgresql

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

我做错了什么?

1 个答案:

答案 0 :(得分:3)

查看数据库 pgdba不存在的消息是什么?

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

尝试:

psql -U pgdba postgres

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

您可能还需要检查pg_hba.conf(如果您想调整身份验证规则,请参阅docs

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

此外,请考虑使用psql的用户信息函数SELECTpg_shadow,而不是\du \dg,这样可以生成更好的格式化和集成信息