PostgreSQL支持使用unix套接字而不是TCP套接字。如何配置以下块以使用unix套接字。
# Configure your database
config :my_app, Sample.Repo,
adapter: Ecto.Adapters.Postgres,
database: "ecto_simple",
username: "postgres",
password: "postgres"
答案 0 :(得分:2)
截至2018年3月,Postgrex现在支持通过套接字连接。
这可以通过提供socket
或socket_dir
选项来完成。这是我选择它的changelog和source code,您可以在其中查看所有选项的详尽列表。
来自源代码:
:socket_dir
- 通过给定目录中的UNIX套接字连接到Postgres;
套接字名称是根据部件派生的。这是首选方法
用于配置套接字,它优先于主机名。如果你是
连接到Postgres惯例之外的套接字,请改用:socket
;
:socket
- 通过给定路径中的UNIX套接字连接到Postgres。
如果你在AppEngine上需要你通过只能通过代理连接工作的localhost(127.0.01)通过SQL代理进行连接,这是非常有用的(我想)。
答案 1 :(得分: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版本。