我正在尝试编写一个示例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启动了&正在运行。dbserver和currentmachine都在同一个网络中(我可以ping)。
提前谢谢。
发布于 2016-04-27 15:04:08
允许从任何ip或以您的IP替换%完全访问数据库,您希望从哪里访问数据库并尝试。
GRANT ALL PRIVILEGES ON *.* TO '<mysql user>'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES ;发布于 2016-04-27 15:05:51
你需要给那个用户许可
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;MySql需要权限用户以及连接远程地址。
发布于 2016-04-27 15:10:35
通常,根MySQL用户无法从远程计算机连接,除非您编辑它。
如果您在当前机器上运行MySQL工作台,请尝试通过网络连接您在java中使用的凭据。如果它在Workbench中不起作用,那么它显然不会在java中工作。
可以使用以下SQL创建新用户:
CREATE USER 'someuser'@'%' IDENTIFIED BY 'somepassword';
GRANT ALL PRIVILEGES ON yourdatabase.* TO 'someuser'@'%' WITH GRANT OPTION;或者使用Workbench来完成它(在MySQL机器上)。通常不建议以root形式进行连接,但是可以启动和运行。最终,您应该切换到专用用户,并根据您的应用程序实现适当的安全性。
请注意:上面的一些答案建议增加特权.但是,根用户已经拥有这些权限,与root连接失败不是特权问题。这是因为根不能从远程机器连接。所以..。添加一个新用户并授予该用户权限。
https://stackoverflow.com/questions/36893626
复制相似问题