我很沮丧地看到这个错误并且不知道解决方案。我正在尝试使用服务器URL连接到mysql数据库,但它提供了我的mysqlException(下面的stacktrace)。代码工作正常,直到这里:
String dbUrl = "jdbc:mysql://server_url/db_name";
String driver = "com.mysql.jdbc.Driver";
Class.forName(driver).newInstance();
String user = "user";
String password = "password";
conn = DriverManager.getConnection(dbUrl,user,password);
这是我遇到的错误
java.sql.SQLException: null, message from server: "Host '172.23.251.154' is not allowed to connect to this MySQL server"
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1070)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2775)
at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
这是因为我使用的是不同版本的mysql-connector jar吗? 请帮帮我。
答案 0 :(得分:1)
来自Chapter 6. SQL Questions: How Do I Enable TCP Connections to MySQL?,
默认情况下, MySQL 不允许任何用户访问任何数据库(如果他们通过
TCP
连接进行连接)。为了允许连接,您必须在user
数据库的mysql
表中创建一个条目(确保选择PASSWORD
函数来加密密码)。特别是,Host
字段需要指示允许连接哪些主机。如果您指定%
(我不推荐),那么用户就可以从任何主机进行连接。
答案 1 :(得分:0)
端口3306上的防火墙怎么样?
答案 2 :(得分:0)
您尝试访问的用户可能没有足够的权限从给定服务器访问数据库。
因此,请尝试向用户提供GRANTS。
GRANT ALL PRIVILEGES ON database_name TO 'user'@'hostname' IDENTIFIED BY PASSWORD <password>;
FLUSH PRIVILEGES;
这里的主机名可以是您的主机地址“172.23.251.154”。不要忘记刷新权限,然后尝试连接服务器。
答案 3 :(得分:0)
如果您的MySql服务器位于您的主机提供商上,您可以在控制面板中设置一个选项,您可以设置IP地址,如果这是您的IP地址,您可以从172.23.251.154连接到mysql服务器