【问题标题】:Play 2.0 PostgreSQL Cannot connect to database [default] only on wirelessPlay 2.0 PostgreSQL 无法连接到数据库 [默认] 仅在无线上
【发布时间】:2014-09-24 21:45:03
【问题描述】:

我的 Play 2.0 数据库设置为使用 PostgreSQL 连接,它在我的有线互联网连接上运行良好。但是,当我尝试从无线互联网连接进行连接时,我收到无法连接到数据库 [默认] 错误。谁能帮我弄清楚这是为什么?

设置:

db.default.driver=org.postgresql.Driver
db.default.url=${DATABASE_URL}
db.default.partitionCount=1

.bashrc 文件中设置的数据库 URL 变量:

postgres://myusername:test123@localhost:5432/projectname

已编辑:

pg_hba.conf 文件:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     tvonehwegen                                md5
#host    replication     tvonehwegen        127.0.0.1/32            md5
#host    replication     tvonehwegen        ::1/128                 md5

postgresql.conf 文件:

# - Connection Settings -

#listen_addresses = 'localhost'     # what IP address(es) to listen on;
                # comma-separated list of addresses;
                # defaults to 'localhost'; use '*' for all
                # (change requires restart)
#port = 5432                # (change requires restart)
max_connections = 100           # (change requires restart)

原来唯一的问题是当我连接到无线网络时,我无法连接到本地 postgreSQL 数据库。有谁知道为什么会这样?谢谢!

【问题讨论】:

  • "并且看起来我在表 pg_settings 中的端口在有线和无线网络 (5432) 上是相同的。"等等,什么?为什么会有所不同?数据库是否也直接连接到无线网络?如果是这样,它是否在同一台机器上,也许是笔记本电脑?
  • 你是如何通过终端连接到它的?你是在 sshing 到某个地方然后运行psql
  • 我提到端口的唯一原因是因为那是我对可能会改变的唯一猜测,但我错了。它在同一台机器上有线和无线。我通过终端使用以下命令连接到数据库:pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
  • 当您说无线时,您是指 WiFi 还是 3G/4G?在有线和无线上检查您的 IP 地址。服务器是否配置为阻止与特定范围的连接?这似乎是一个网络/服务器配置问题,而不是 Postgres/Scala/Play 问题。
  • 这没有任何意义。您的数据库位于localhost。有线 / WiFi / 任何东西都应该完全没有区别。我唯一的猜测是你有一个写得很糟糕的防火墙,当你通过 WiFi 连接时它会打开,它会过滤环回接口上的数据包(到/来自本地主机)。当您没有连接到任何一个时它是否有效?请编辑您的问题并解释所有内容是如何联系在一起的

标签: postgresql networking


【解决方案1】:

检查 IPv6 的 WiFi/互联网设置。在某些网络上,除了传统的 IPv4 地址之外,您的机器还会获得 IPv6 地址。在这种情况下,通常localhost 被映射到::1 而不是127.0.0.1;这意味着如果您将pg_hba.conf 设置为根据 IPv4 地址授予访问权限,事情就会出错。

假设防火墙已关闭,例如在基于 Redhat 的系统 service iptables stop 上,相关文件中存在以下 sn-ps:

pg_hba.conf:

host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5

postgresql.conf:

listen_addresses = '*'

您应该能够连接到所需的数据库,如下所示:

$ psql -h ::1 -U USERNAME -d DATABASE
Password for user USERNAME: 
psql (9.1.11)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

DATABASE=> 

$ psql -h 127.0.0.1 -U USERNAME -d DATABASE
Password for user USERNAME: 
psql (9.1.11)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

DATABASE=> 

最后 Play 的 JDBC 连接设置应该是下面的形式:

db.default.driver=org.postgresql.Driver
db.default.url="jdbc:postgresql://127.0.0.1:5432/DATABASE"
db.default.user=USERNAME
db.default.password=PASSWORD

注意:我强烈建议您永远不要在连接字符串中使用localhost。 99.99% 的时间你需要的是127.0.0.1

【讨论】:

  • 感谢您的信息!我的 WIFI TCP/IP 设置是:配置 IPv6:自动我的 pg_hba.conf 文件如下所示:# IPv4 本地连接:托管所有所有 127.0.0.1/32 信任 #IPv6 本地连接:托管所有所有 ::1/128 信任我的服务器开始就好了 - 我可以连接并查询我的 PostgreSQL 数据库,但我的 Play webapp 似乎无法连接。
  • 尝试将pg_hba.conf 中的trust 更改为md5。 JDBC 需要与数据库交换用户名和密码对。
  • 仔细检查后似乎并没有解决我的问题。我编辑了我的问题以包含我的 pg_hba.conf 文件。我尝试将所有信任更改为 md5,但这也不起作用。你还有其他建议吗?感谢您的宝贵时间!
  • 连接WiFi时,psql -h 127.0.0.1 -U UID -d DATABASEpsql -h localhost -U UID -d DATABASE的输出是什么?对于UIDDATABASE,请在您的 Play 应用中使用。
  • psql -h 127.0.0.1 -U UID -d DATABASE 将我登录到我的数据库中。输出:psql (9.3.2) 键入“help”寻求帮助。 psql -h localhost -U UID -d DATABASE 询问我的密码,但它不接受任何密码。我尝试了我的机器的用户密码以及 test123,这就是我的 DATABASE_URL 设置(postgres://username:test123@localhost:5432/databasename)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-27
  • 2014-03-30
  • 2013-04-19
  • 1970-01-01
  • 2022-12-03
  • 2022-12-05
相关资源
最近更新 更多