2011-11-08 94 views
2

我有一個奇怪的問題。我可以使用psql從命令行連接到遠程主機,但不能在django設置文件中使用完全相同的憑據。我得到的錯誤:django無法連接到服務器:權限被拒絕服務器運行在主機上並接受端口遠程主機上的TCP/IP連接

Could not connect to server: Permission denied Is the server running on host "remote ip" and accepting TCP/IP connections on port port_number?

如果我可以用psql的,而不是使用Django我錯過什麼這裏連接?我也通過python解釋器檢查我可以加載psycopg2。

任何幫助都非常感謝,因爲我在網上找到的幫助都不是。

乾杯,

d

下面是settings.py

'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', 
} 
+1

您將需要發佈一些示例代碼/配置。 –

+1

我可以做到這一點...但這裏有一些更有趣的事情......我可以運行命令python manage.py runserver和我可以使用該網站...它必須是與Apache的東西,但是Apache有什麼需要做的數據庫連接? – deecodameeko

+1

當然是的。 Apache正在將您的應用程序服務器(mod_wsgi)作爲模塊運行。如果postgres僅允許來自某個用戶的連接,您可能沒有權限連接到數據庫,因爲運行wsgi/apache的用戶 –

回答

7

根據您的描述這個事做與Apache和它的權限來訪問數據庫DB的conf。你沒有提到你使用哪個操作系統,但是如果它運行的是SELinux,默認規則會阻止Apache連接到數據庫。如果是這種情況,您可以通過運行暫時啓用它:

setsebool httpd_can_network_connect_db 

Here是更詳細的說明。

+0

啊,是的,對不起......這是在紅帽。 – deecodameeko

+0

這樣做的伎倆...之後重新啓動,一切都很好。乾杯。 – deecodameeko

5

要更改在重新啓動後(在CentOS測試)持續性:

setsebool -P httpd_can_network_connect_db on 

更多here

0

測試CentOS上。

service httpd stop 

service postgresql stop 

setsebool -P httpd_can_network_connect 1 

service httpd start 

service postgresql start 
相關問題