我正在尝试编写一个示例jdbc程序来连接到远程计算机
中的mysql db // JDBC driver name and database URL
String JDBC_DRIVER = "com.mysql.jdbc.Driver";
String DB_URL = "jdbc:mysql://<remote machine>/<database>"
// Database credentials
String USER = "root";
String PASS = "mnlinux";
Class.forName(JDBC_DRIVER);
Connection con = DriverManager.getConnection(DB_URL, USER, PASS);
Statement stmt = con.createStatement();
String sql = "SELECT x FROM t";
ResultSet resultSet = stmt.executeQuery(sql);
while(resultSet.next()){
//Retrieve by column name
int id = resultSet.getInt("x");
//Display values
System.out.print("ID: " + id);
}
resultSet.close();
stmt.close();
con.close();
*Its returning Exception in thread "main" java.sql.SQLException: Access denied for user 'root'@'CurrentMachine' (using password: YES)*
执行DriverManager.getConnection(DB_URL, USER, PASS);
请帮我连接数据库。 我的MySQL出现了&amp;运行。 dbserver和amp; currentmachine在同一网络中(我能ping)。
提前致谢。
答案 0 :(得分:1)
允许从任何ip完全访问数据库或用你的IP替换%,从那里你想要访问数据库并尝试。
GRANT ALL PRIVILEGES ON *.* TO '<mysql user>'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES ;
答案 1 :(得分:1)
您需要为该用户授予权限
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
MySql需要权限用户以及连接远程地址。
答案 2 :(得分:0)
通常,根MySQL用户无法从远程计算机连接,除非您进行编辑。
如果您在当前计算机上运行MySQL Workbench,请尝试使用您在java中使用的凭据通过网络进行连接。如果它在Workbench中不起作用,那么它显然不适用于java。
您可以使用以下SQL创建新用户:
CREATE USER 'someuser'@'%' IDENTIFIED BY 'somepassword';
GRANT ALL PRIVILEGES ON yourdatabase.* TO 'someuser'@'%' WITH GRANT OPTION;
或使用Workbench来执行此操作(在MySQL计算机上)。通常不建议以root身份连接,但是可以启动并运行。最终,您应该切换到专用用户,并根据您的应用程序,实现适当的安全性。
请注意:上面的一些答案建议添加权限...但是,root用户已经具有这些权限,并且与root连接失败不是特权问题。这是因为root无法从远程计算机连接。所以......添加一个新用户并授予该用户权限。