2

我无法通过 netbeans 连接到托管在 linux 服务器上的 MySQL 服务器。

当通过 MySQL Workbench “Standard TCP/IP through ssh”连接时,所有这些凭据都有效。

这是我的代码:

public class Database {
private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String URL = "jdbc:mysql://john.myschool.edu:3306/cs3610";
private static final String USERNAME = "mbrooke";
private static final String PASSWORD = "mypass";
private Connection connection;

public Database() throws Exception{
    try{
        connect();
    }catch(SQLException e){
        if(connection !=null){
            connection.close();
        }
    }
}

//Open connection to database
private void connect() throws Exception{
    connection = null;
    Class.forName (DRIVER).newInstance ();
    connection = DriverManager.getConnection(URL,USERNAME,PASSWORD);

}

}

我在以“connection = DriverManager ...”开头的行上收到带有#521 的 SQLException,但我不确定是什么导致了这个问题。驱动程序似乎已正确安装,因为在单步执行时,我通过了“Class.forName(D...”) 行,没有抛出异常。

4

2 回答 2

2

听起来您的数据库服务器没有打开端口 3306,或者您的 MySQL 凭据不允许使用远程连接。

MySQL Workbench 的TCP/IP over SSH设置首先打开到 SSH 服务器的 SSH 连接,然后连接到数据库服务器(通常是localhost127.0.0.1)。所以 MySQL 连接实际上是从 SSH 服务器发起的。因此,通过该通道连接的能力仅表明您的 java 代码在您正在 SSH 连接的服务器上运行时可以工作。但是在尝试从另一台机器运行代码时,您可能仍然遇到防火墙或 MySQL 权限问题。

我会尝试将 MySQL 客户端下载到您的机器上,看看您是否可以使用该方法进行连接:mysql -h myDatabaseServer.school.edu cs3610 -u mbrooke -p'mypass'看看是否可行。您可能会收到“连接不可用”错误或“用户 mbrooke 无权远程访问”,这应该可以让您深入了解您面临的问题。

于 2012-04-19T23:28:29.373 回答
1

试试不带结尾的斜线

URL = "jdbc:mysql://john.myschool.edu:3306/cs3610/";

URL = "jdbc:mysql://john.myschool.edu:3306/cs3610";

或者您有一个名为“cs3610/”的数据库

于 2012-04-19T21:52:06.097 回答