我尝试使用此代码进行连接,但它不起作用:
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)
此用户拥有数据库的所有权限。我该如何解决这个问题?
答案 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,请用%