今天我第一次玩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
。
答案 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。