为什么psycopg2.connect没有检查密码?

时间:2014-02-27 00:06:27

标签: postgresql psycopg2

今天我第一次玩psycopg2,我正在尝试了解密码是如何工作的...我有一个测试脚本可以删除表,重新创建表,添加一行,并打印行。我的问题是为什么connect命令能否正常工作,无论我是否给它一个正确的密码?例如这一行:

conn = psycopg2.connect(database="mydb",host="localhost",port=5432,user="amos",
                        password="asdf")

和这一行:

conn = psycopg2.connect(database="mydb",host="localhost",port=5432,user="amos",
                        password="asdf123")

意外地执行相同的操作,脚本的其余部分完成且没有错误。显然,无论密码实际是什么,这些行中只有一行应该有效。正如预期的那样,如果我尝试user="amos123",我会收到错误,因为该用户不存在。如果重要,我的PostgreSQL安装了Postgres.app

1 个答案:

答案 0 :(得分:2)

经过一些研究,我发现登录标准是在名为pg_hba.conf的文件中指定的,默认情况下我的安装中有这一行:

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust

根据this trust值表示它不检查密码。我想这对于这个newb是不直观的,因为如果这个行为是我想要的,我就不会在第一时间设置密码。我在这里发布它是为了节省未来的googlers。