【问题标题】:connection to mysql server from clojure从clojure连接到mysql服务器
【发布时间】:2011-09-30 20:16:11
【问题描述】:

我正在尝试从 clojure 连接到 mysql 数据库。我使用的示例代码取自: http://corfield.org/blog/post.cfm/connecting-clojure-and-mysql 但我收到此错误:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
Last packet sent to the server was 0 ms ago.

mysql服务器绑定到127.0.0.1:3306。在 :subname 中将 localhost 更改为 127.0.0.1 没有帮助。我已将 mysql 服务器设置为记录所有内容以进行调试,它甚至没有看到连接到来。我在这里做错了什么?

【问题讨论】:

  • 您确定您的 MySQL 服务器已配置为接受网络连接吗? IIRC 一些服务器配置只允许 unix 文件套接字而不是网络连接。您可以通过运行 mysqlclient -h $yourhostname .... 来测试它

标签: mysql jdbc clojure


【解决方案1】:

我可以使用mysql -h 127.0.0.1 连接到数据库。但是,如果我将 127.0.0.1 更改为 localhost,则无法连接。 my.cnf 包含:bind-address = 127.0.0.1,正如我在上面写的,在 :subname 中更改为 127.0.0.1 没有帮助。成功的方法是将mysqld : ALL : ALLOW 放入/etc/hosts.allow 中。我不知道为什么需要这样做,尤其是当所有其他与 MySQL 服务器联系的服务都没有它时。

【讨论】:

  • 回答我自己的问题,似乎其他应用程序通过 unix 套接字连接到 mysqld,在这种情况下,不使用 TCP 包装器,因为这不是 TCP/IP 网络连接。另一方面,jdbc 驱动程序使用 TCP/IP 连接到主机:端口,因此适用包装库限制。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-01
  • 2019-09-29
  • 1970-01-01
  • 2022-06-17
  • 2021-12-17
  • 1970-01-01
  • 2016-09-10
相关资源
最近更新 更多