用Java远程连接到MySQL数据库

时间:2014-12-01 05:37:36

标签: java mysql

我尝试使用此代码进行连接,但它不起作用:

Class.forName("com.mysql.jdbc.Driver").newInstance();
//line 4        Connection con = DriverManager.getConnection("jdbc:mysql://example.com:3306/db", "user", "pass");

    Statement st = con.createStatement();
    String sql = ("SELECT * FROM users;");
    ResultSet rs = st.executeQuery(sql);
    if(rs.next()) { 
     int id = rs.getInt("id"); 
     String str1 = rs.getString("imei");
     System.out.print(id+"+++"+str1);

我收到此错误:

  

java.sql.SQLException:拒绝用户'用户' ip' (使用   密码:是)at   com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)at at   com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)at at   com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3558)at at   com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3490)at at   com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:919)

此用户拥有数据库的所有权限。我该如何解决这个问题?

4 个答案:

答案 0 :(得分:0)

将以下命令写入远程机器Mysql Server。

mysql> GRANT ALL ON *.* to root@'localhost' IDENTIFIED BY 'your-root-password'; 

mysql> FLUSH PRIVILEGES;

此命令可帮助您将远程计算机连接到计算机

答案 1 :(得分:0)

我认为你没有'ip'

的格兰特

试试这个: -

grant all privileges on db.* to 'user'@'%' to allow connections originating from anywhere

答案 2 :(得分:0)

即使用户已拥有所有权限,您仍需要按照以下方式提供用户信息:

DriverManager.getConnection("jdbc:mysql://localhost/db-name","user","password");

你必须替换" db-name"对于您的数据库的名称," user"对于您创建的用户和"密码"对于用户的密码(如果您没有密码,请将其保留为"")。

您甚至可以创建一个变量类型的Connection并添加到您的代码中,以备将来需要时使用,例如:

Connection con = DriverManager.getConnection("jdbc:mysql://localhost/db-name","user","password");

希望有所帮助!

答案 3 :(得分:0)

要从java远程访问数据库,您需要设置数据库用户访问权限,以便从您的mysql终端执行以下任何位置访问数据/

GRANT ALL PRIVILEGES ON database_name.* TO 'mysql_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

在上面的查询中%显示mysql_user可以从任何IP全局访问database_name数据库。如果您想允许特定的IP,请用%

替换您的IP