使用psycopg2无密码连接到数据库
我有我的本地主机上我可以访问没有密码postgres数据库
$ psql -d mwt psql (8.4.12) Type "help" for help. mwt=# SELECT * from vatid; id | requester_vatid |... -----+-----------------|... 1719 | IT00766780266 |...
我想从django访问该数据库。 所以我把DATABASES
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'mwt', 'USER': 'shaoran', 'HOST': 'localhost' } }
由于我不需要密码来访问我的testing数据库,我没有在设置中提供任何PASSWORD
值。
$ ./manage.py shell >>> from polls.models import Vatid >>> Vatid.objects.all() connection_factory=connection_factory, async=async) OperationalError: fe_sendauth: no password supplied
我尝试使用PASSWORD: ''
但我得到相同的错误信息。 我试图使用PASSWORD: None
但也没有帮助。
我一直在寻找关于这个Django的文档,但我找不到任何有用的东西。 有可能configurationdjango.db.backends.postgresql_psycopg2
接受空密码?
检查你的pg_hba.conf
以允许用户shaoran
允许从localhost
连接,然后在Django设置中提供shaoran
的密码或者在pg_hba.conf
信任用户
可以通过psql
连接的事实是因为psql -d mwt
使用了一些在pg_hba.conf
中设置为可信的默认连接值。 例如,在我的机器上,默认主机是local socket
而不是localhost
令人惊讶的是,答案是根本不指定主机。 如果你这样做,
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'mwt', } }
然后psycopg2将以psql
相同的方式使用Unix套接字进行连接。 当你指定一个HOST
,psycopg2将连接到需要密码的TCP / IP。
为了避免在Django settings.py
使用密码,请将md5
更改为trust
pg_hba.conf
这一行:
host all all 127.0.0.1/32 trust
要详细了解postgres安全configuration,请阅读本文档。
要find这个文件:
sudo -u postgres psql -c 'SHOW hba_file;'