如何测试新创建的用户是否可以与 PostgreSQL 数据库通信?

如何测试新创建的用户是否可以与 PostgreSQL 数据库通信?

我的设置:

  • Ubuntu 9.10
  • PostgreSQL 8.4.2

我在本地 PostgreSQL 下使用 psql shell 中的以下命令创建了一个新用户(jdoe):

CREATE USER jdoe WITH PASSWORD 'password';

我还创建了一个名为 的新数据库mydb。我的目标是让用户jdoe完全访问数据库mydb。我通过 GUI pgAdmin III 做了一些事情,\l在 psql shell 中运行后,我得到了以下输出:

                                    List of databases
Name     |  Owner   | Encoding |  Collation  |    Ctype    |   Access privileges
--------------+----------+----------+-------------+-------------+---------------
mydb     | jdoe     | UTF8     | en_CA.UTF-8 | en_CA.UTF-8 | =CTc/mydb
                                                           : hmart=CTc/mydb
postgres | postgres | UTF8     | en_CA.UTF-8 | en_CA.UTF-8 | 

显示我的用户列表(\du),我得到:

            List of roles
 Role name | Attributes  | Member of 
-----------+-------------+-----------
 jdoe      |             | {}
 postgres  | Superuser   | {}
           : Create role   
           : Create DB    

从上面的内容中我无法真正判断我的目标是否已经实现,但是有没有办法测试用户是否jdoe可以与数据库通信mydb?我正在通过 Django 的设置进行测试:

DATABASE_ENGINE = 'postgresql_psycopg2'           
DATABASE_NAME = 'mydb'      
DATABASE_USER = 'jdoe'       
DATABASE_PASSWORD = 'password'        
DATABASE_HOST = ''         
DATABASE_PORT = '' 

但在之后我收到以下错误python manage.py syncdb

psycopg2.OperationalError: FATAL:  Ident authentication failed for user "jdoe"

我在 Win XP 上使用最新的 PostgreSQL 安装程序完成了上述所有操作,并且所有操作都与 Django 完美配合。我不确定我在 Ubuntu 下缺少了什么。

答案1

您可能已在 pg_hba.conf 中进行了设置,以便本地套接字连接必须使用 ident 授权,而到 localhost 的 tcp 连接是受信任的。请阅读 pg_hba.conf 中有关您版本的文档,例如 8.4 是这里,您可以根据自己的情况进行正确的配置。

答案2

这很奇怪,设置DATABASE_HOSTlocalhost修复该问题:

# settings.py
DATABASE_HOST = 'localhost'

相关内容