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 docs を参照してください。接続先のデータベースを指定していないため、- という名前の DB に接続しようとしていますが、pgdbaこれは存在しません。

試す:

psql -U pgdba postgres

postgresrole を使用してデータベースに接続しますpgdba

また、調べる必要があるかもしれません(認証ルールを微調整したい場合は、ドキュメントpg_hba.confを参照してください。

ところで、既知のバグがある古いバージョンの PostgreSQL を実行しています。9.0 シリーズの最新のパッチ リリースである 9.0.8 に更新してください。データベースをダンプしてリロードしたり、これを使用したりする必要はありませんpg_upgrade。単純なドロップイン置換です。不足しているすべての修正については、リリース ノートを参照してください。

SELECTまた、 from を使用するのではなく、pg_shadowpsql のユーザー情報関数\duおよびを使用することを検討して\dgください。これにより、より適切にフォーマットされ、統合された情報が生成されます。

于 2012-08-08T01:49:19.873 に答える