2016-05-01 12 views
3

PostgreSQL支持使用unix套接字而不是TCP套接字。如何配置以下塊以使用unix套接字。如何配置phoenix使用postgresql的套接字

# Configure your database 
config :my_app, Sample.Repo, 
    adapter: Ecto.Adapters.Postgres, 
    database: "ecto_simple", 
    username: "postgres", 
    password: "postgres" 
+0

我敢肯定Postgrex(其中外生使用靈藥PostgreSQL驅動)不支持通過Unix套接字連接。 – Dogbert

+0

@Dogbert在瀏覽一些文檔後,我認爲你可能是對的。 – steakunderscore

回答

1

由於2018年3月,Postgrex現在支持通過套接字連接。

這可以通過提供一個socketsocket_dir選項來完成。下面是我從中選擇的changelogsource code,您可以在其中查看所有選項的詳盡列表。

從源代碼:

  • :socket_dir - 通過在給定的目錄UNIX插座連接到Postgres的; 套接字名稱是根據零件派生的。這是配置套接字的首選方法 ,它優先於主機名。如果你是 連接到Postgres的約定以外的插座,使用:socket代替;

  • :socket - 通過給定路徑Unix套接字連接到Postgres的。

這是非常有用的(我想)如果你AppEngine上它要求你通過本地主機(127.0.01)通過SQL代理連接,只有通過代理服務器連接工作。

0

PostgreSQL基於性能和隱私的原因,更喜歡unix套接字到TCP套接字。如果尚不可用:如果您遵循簡單文檔並有權訪問,則可以在服務器上啓用TCP。

客戶端連接的途徑是通過環境變量設置,特別是:PGHOST。從經驗來看,像libpq這樣的驅動程序希望以這種方式工作 - 如果Postgrex沒有這樣做,那將是令人震驚的。 請參閱:https://hexdocs.pm/postgrex/Postgrex.html

在PGHOST中提供的值根據服務器的配置而不同,如文件「postgresql.conf」中所示。

這是可能的,你可能需要創建插座和設置權限的目錄。以下應該有所幫助:http://iamvery.com/2013/06/17/postgresapp-with-unix-socket.html

爲了得到更精確的答案,你需要提及你的操作系統和版本;也是你的PostgreSQL版本。

相關問題