Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 为什么psycopg2可以连接到我的数据库,而我可以';T_Django_Postgresql - Fatal编程技术网

Django 为什么psycopg2可以连接到我的数据库,而我可以';T

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:

我试图对我的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:  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