用于MySQL连接的JDBC:适用于MySQL Workbench,而不适用于JDBC

时间:2015-12-15 21:14:10

标签: mysql jdbc

我有一个在bluehost机器上运行的数据库服务器,我给自己远程IP访问(通过我的IP地址)。

在我的客户端计算机上,我有MySQL Workbench,我有一些Java代码。 MySQL工作台正在使用我想要的数据库来获取连接。使用驱动程序管理器连接时,我无法指定我的数据库,例如在URL中的端口#后面使用正斜杠,否则会出现连接错误。

我可以使用Workbench或驱动程序管理器获得与相同用户标识和密码的连接,但是使用JDBC时,它不希望我访问同一个数据库。

当我尝试执行此(JDBC): "use database"时,我得到:

  

用户'userid'@'184.11.22.%'拒绝访问数据库'数据库'

我使用的网址是

jdbc:mysql://(server-ip):(port)

如果我尝试在URL上附加'/(数据库)',则会发出访问冲突。 MySQL Workbench没有获得任何其他特殊信息,但似乎与指定的默认架构连接。相同的客户机;相同的用户ID和密码。 JDBC连接出了什么问题?

添加了Java代码:

    db = DriverManager.getConnection(
        "jdbc:mysql://74.220.192.113/advanfc7_atm?" + 
        "user=(myuserid&password=(mypwd)");
    System.out.println("Connected.");
  statement = db.createStatement();
  statement.execute("use advanfc7_atm");
} catch (Exception e) {
  System.out.println("InitDB() "+e.getMessage());

}

我还使用getConnection()的3个参数完成了它,将userid和password分隔为第2和第3个参数。

1 个答案:

答案 0 :(得分:1)

getConnection代码中存在一个小的语法错误:

target

请注意,db = DriverManager.getConnection( "jdbc:mysql://74.220.192.113/advanfc7_atm?" + "user=(myuserid&password=(mypwd)"); 上的右括号缺失。它应该是user=(myuserid

<强>相反:
由于每个驱动程序都有不同的网址语法,因此使用DriverManager.getConnection(String url, String user, String password)方法通常会更安全。

使用示例:

user=(myuserid)