Glassfish无法连接到远程MySQL,但localhost可以

时间:2017-04-26 02:31:53

标签: java mysql ubuntu glassfish

请给我一个解释我神秘情况的机会。

我的Glassfish服务器无法连接到远程MySQL数据库。

我检查了以下说明

  1. ping远程主机 - 确定
  2. 通过mysql命令连接(mysql -h 远程 -u 用户 -p) - 确定
  3. ssh端口转发(ssh -L13306:localhost:3306 远程)并配置glassfish使用它(jdbc://127.0.0.0:13306 / mydb) - 确定
  4. 我认为我的配置(服务器名称,数据库名称,用户名和密码)是正确的。 但仍然无法连接到数据库。

    我的环境:

    当地方

    • Ubuntu 17.04
    • Oracle Java 1.8.0 u131
    • Glassfish 4.1(build 13)
    • MySQL Connector / J 5.1.41

    远程端

    • FreeBSD 11
    • MySQL 5.5.46

    我昨晚用Google搜索,但找不到答案。

    4月28日已编辑:

    我的server.log说:

    [2017-04-26T09:03:07.932+0900] [glassfish 4.1] [WARNING] [test.connection.pool.failed] [javax.enterprise.resource.resourceadapter.com.sun.enterprise.connectors.service] [tid: _ThreadID=98 _ThreadName=admin-listen
    er(6)] [timeMillis: 1493164987932] [levelValue: 900] [[
      RAR8054: Exception while creating an unpooled [test] connection for pool [ MysqlMacms ], Connection could not be allocated because: Communications link failure
    
    The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.]]
    
    [2017-04-26T09:03:07.940+0900] [glassfish 4.1] [SEVERE] [] [org.glassfish.admingui] [tid: _ThreadID=49 _ThreadName=admin-listener(5)] [timeMillis: 1493164987940] [levelValue: 1000] [[
      RestResponse.getResponse() gives FAILURE.  endpoint = 'http://localhost:4848/management/domain/resources/ping-connection-pool.json'; attrs = '{id=admtkMysqlMacms}']]
    

2 个答案:

答案 0 :(得分:1)

连接失败的第一个原因可能是你的jdbc网址。你显示

jdbc://127.0.0.0:13306/mydb

虽然172.0.0.0是有效的环回地址(所有127.0.0.0 / 8都是),但localhost通常配置为127.0.0。 1 。您还缺少 mysql 规范:

所以改为

jdbc:mysql://127.0.0.1:13306/mydb

失败的第二个可能原因:如何配置访问mysql?从127.0.0.1连接时用户是否可以访问?当glassfish连接到本地ssh隧道端点时,对于mysql服务器,它看起来像是某个人的mysql-server-localhost正在连接。

您是否可以登录运行glassfish的服务器并执行

mysql -h 127.0.0.1 --port 13306 -u user -p
从那里开始。如果这不起作用,请检查从localhost和127.0.0.1

访问的用户的访问配置

第三个原因可能是Glassfish中缺少mysql连接器库的安装。这是described in the mysql doc,基本上是:

  

安装GlassFish后,请确保它可以访问MySQL Connector / J.为此,请将MySQL Connector / J jar文件复制到domain-dir / lib目录。例如,将mysql-connector-java-5.1.30-bin.jar复制到C:\ glassfish-install-path \ domains \ domain-name \ lib。重新启动GlassFish Application Server。有关详细信息,请参阅GlassFish Server Open Administration Edition管理指南中的“集成JDBC驱动程序”,可在GlassFish Server文档中找到。

<强>更新

在连接网址中添加:mysql:部分并引用连接器安装。

答案 1 :(得分:0)

我再试一次,问题不再复制。

我不确定我的配置是否错误。