Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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无法连接到服务器:该服务器在主机上运行并且在端口远程主机上接受TCP/IP连接时,权限被拒绝_Django_Postgresql - Fatal编程技术网

django无法连接到服务器:该服务器在主机上运行并且在端口远程主机上接受TCP/IP连接时,权限被拒绝

django无法连接到服务器:该服务器在主机上运行并且在端口远程主机上接受TCP/IP连接时,权限被拒绝,django,postgresql,Django,Postgresql,我有个奇怪的问题。我可以从命令行使用psql连接到远程主机,但不能在django设置文件中使用完全相同的凭据。我得到一个错误: 无法连接到服务器:权限被拒绝服务器是否正在运行 在主机“远程ip”上,并在端口上接受TCP/ip连接 港口号码 如果我可以使用psql而不使用django进行连接,那么我在这里遗漏了什么?我还通过python解释器检查了是否可以加载psycopg2 任何帮助都是非常感谢的,因为我在网上找到的没有任何帮助 干杯 D 下面是settings.py中的db conf 'def

我有个奇怪的问题。我可以从命令行使用psql连接到远程主机,但不能在django设置文件中使用完全相同的凭据。我得到一个错误:

无法连接到服务器:权限被拒绝服务器是否正在运行 在主机“远程ip”上,并在端口上接受TCP/ip连接 港口号码

如果我可以使用psql而不使用django进行连接,那么我在这里遗漏了什么?我还通过python解释器检查了是否可以加载psycopg2

任何帮助都是非常感谢的,因为我在网上找到的没有任何帮助

干杯

D

下面是settings.py中的db conf

'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2', 
        'NAME': '<db name goes here>', # Or path to database file if using sqlite3.
        'USER': '<db user>', # Not used with sqlite3.
        'PASSWORD': '<pswd goes here>', # Not used with sqlite3.
        'HOST': '<remote ip goes here>', 
        'PORT': '5432', 
}
“默认值”:{
“引擎”:“django.db.backends.postgresql_psycopg2”,
'NAME':'',#或数据库文件的路径(如果使用sqlite3)。
'USER':'',不与sqlite3一起使用。
“密码”:不与sqlite3一起使用。
“主持人”:“,
“端口”:“5432”,
}

根据您的描述,这与Apache及其访问数据库的权限有关。您没有提到您使用的操作系统,但如果它运行SELinux,默认规则会阻止apache连接到db。如果是这种情况,您可以通过运行以下命令临时启用它:

setsebool httpd_can_network_connect_db

更详细的说明。

要使更改在重新启动期间保持不变(在Centos上测试),请执行以下操作:

阅读更多在CentOs上测试的内容

service httpd stop

service postgresql stop

setsebool -P httpd_can_network_connect 1

service httpd start

service postgresql start

您需要发布一些示例代码/配置。我可以这样做…但这里有一个更有趣的事情…我可以运行命令python manage.py runserver,我可以使用该站点…它必须与apache有关,但apache与db连接有什么关系?当然有。Apache将您的应用服务器(mod_wsgi)作为一个模块运行。如果postgres只允许来自某个用户的连接,那么您可能没有权限以运行wsgi/apache的用户身份连接到数据库啊,是的,很抱歉……这是在Red Hat上。这就成功了……之后重新启动,一切正常。干杯
service httpd stop

service postgresql stop

setsebool -P httpd_can_network_connect 1

service httpd start

service postgresql start