无法连接到mysql jdbc数据库

时间:2014-10-14 19:50:57

标签: java mysql database jdbc

我很沮丧地看到这个错误并且不知道解决方案。我正在尝试使用服务器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吗? 请帮帮我。

4 个答案:

答案 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服务器