Django 为什么psycopg2可以连接到我的数据库,而我可以';T
我试图对我的Django站点进行数据库转储,但是Django的本机dumpdata命令对于大型数据库来说非常糟糕,所以我想使用pg_dump 这项工作:Django 为什么psycopg2可以连接到我的数据库,而我可以';T,django,postgresql,Django,Postgresql,我试图对我的Django站点进行数据库转储,但是Django的本机dumpdata命令对于大型数据库来说非常糟糕,所以我想使用pg_dump 这项工作: python >>> import psycopg2 >>> psycopg2.connect(database='blah',user='blah',password='blah',host='localhost') 这不管用 bash # psql -U blah blah psql: FATAL:
python
>>> import psycopg2
>>> psycopg2.connect(database='blah',user='blah',password='blah',host='localhost')
这不管用
bash
# psql -U blah blah
psql: FATAL: Ident authentication failed for user "blah"
# pg_dump -U blah blah
pg_dump: [archiver (db)] connection to database "blah" failed: FATAL: Ident authentication failed for user "blah"
我的搜索结果表明,我可能需要在
/etc/postgresql/9.0/main/pg_hba.conf
中将“ident”更改为“password”。这是一个合理的改变吗?为什么我不能使用任何对python psycopg2运行良好的方法进入pg_转储?如果在psql/pg_转储命令行上提供-h localhost
,它将通过TCP套接字而不是unix套接字进行连接。它们可以在pg_hba.conf中定义不同的身份验证方法。由于“ident身份验证”只适用于unix套接字,因此显然情况就是这样
将pg_hba.conf更改为对“本地”行(unix套接字)使用“md5”而不是“ident”是合理的,这样可以坚持使用postgresql用户帐户中定义的密码,而不是期望unix用户名识别postgresql用户名
在默认的Debian配置中,用于验证为“postgres”的行是单独放置的,因此您可以根据需要将其他用户的默认设置更改为md5或trust,只保护一个帐户。Postgres用户抱怨Debian/Ubuntu默认的“ident”身份验证比帮助更容易混淆。您是否尝试过在代码中指定相同的选项?i、 e.
psql-h localhost-u blah-W