我有一个在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个参数。
答案 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)