无法从Java连接到mysql服务器

安迪谢·基卡

"Communications link failure"在这行代码中得到错误

mySqlCon = DriverManager.getConnection("jdbc:mysql://**server ip address**:3306/db-name", "mu-user-name", "my-password");

我检查了这篇文章中的所有内容

  • 我在etc / mysql中的my.cnf中增加了max-allowed-packet:max_allowed_pa​​cket = 5073741824 ------ [mysqldump] max_allowed_pa​​cket = 1G
  • 绑定地址是:127.0.0.1
  • 所有超时值均等于一个数字
  • Tomcat尚未安装在服务器(新服务器)上
  • my.cnf中没有跳过网络
  • 我可以ping服务器
  • 我通过ssh连接到mysql数据库

当我将查询字符串更改为此:

mySqlCon = DriverManager.getConnection("jdbc:mysql://**server ip address**:22/127.0.0.1:3306/db-name", "mu-user-name", "my-password");

我得到错误 Packet for query is too large (4739923 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.

虽然我已经更改了my.cnf上的数据包大小,然后重启了mysql服务。

有什么建议么?

注意:

我可以使用此代码通过ssh连接,但是这种方式似乎不合理!我可以在main中连接一次,然后将连接传递给所有类。

public my-class-constructor() {

        try {
            go();
        } catch (Exception e) {
            e.printStackTrace();
        }

        mySqlCon = null;
        String driver = "com.mysql.jdbc.Driver";
        String url = "jdbc:mysql://" + rhost + ":" + lport + "/";
        String db = "my-db-name";
        String dbUser = "dbuser";
        String dbPasswd = "pass";
        try {
            Class.forName(driver);
            mySqlCon = DriverManager.getConnection(url + db, dbUser, dbPasswd);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void go() {
        String user = "ssh-user";
        String password = "ssh-pass";
        String host = "ips-address";
        int port = 22;
        try {
            JSch jsch = new JSch();
            Session session = jsch.getSession(user, host, port);
            lport = 4321;
            rhost = "localhost";
            rport = 3306;
            session.setPassword(password);
            session.setConfig("StrictHostKeyChecking", "no");
            System.out.println("Establishing Connection...");
            session.connect();
            int assinged_port = session.setPortForwardingL(lport, rhost, rport);
            System.out.println("localhost:" + assinged_port + " -> " + rhost
                    + ":" + rport);
        } catch (Exception e) {
            System.err.print(e);
            e.printStackTrace();
        }
    }
安迪谢·基卡

我将/ etc / mysql中my.cnf文件中的绑定地址更改为服务器的ip地址,它解决了问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章