在连接字符串中用ip地址替换localhost

时间:2014-05-02 04:58:07

标签: java mysql

 public Connection conn() throws ClassNotFoundException, InstantiationException,                   IllegalAccessException, SQLException
{
    Connection all_connection = null;
     Class.forName("com.mysql.jdbc.Driver").newInstance();

      all_connection = DriverManager
        .getConnection("jdbc:mysql://localhost:3306/dbname","username","password");   
    return all_connection;

}

上面的代码是我的连接代码。它的工作正常。如果我用我的IP地址替换localhost,它不起作用。其实我想用ip地址替换localhost。用127.0.0.1替换localhost工作正常。为什么更换IP地址不起作用????

4 个答案:

答案 0 :(得分:1)

这可能是您的数据库用户的问题。 (我无法确定,因为你没有发布实际错误)

您需要验证允许您访问的用户是否允许从外部IP访问数据库。您可能正在使用root用户,允许从localhost,127.0.0.1和:: 1进行访问,但不能从外部IP进行访问。

如果是,请确保设置仅具有所需访问权限的新数据库用户,并允许从特定IP或%(任何主机)进行访问

答案 1 :(得分:0)

我刚接触到同样的问题。

IP地址是指其他数据库服务器的IP?

如果是,则检查防火墙是否允许3306端口的传入连接?

如果不是,那么在具有3306连接后的服务器机器中的新规则允许。

服务器机器中的哪个操作系统?

我在postgresql中做了如下操作:

jdbc:postgresql://192.168.1.9:5432/dbName

在你的情况下,它将是:

jdbc:mysql://192.168.1.9:3306/dbName

我建议你先检查机器的防火墙端口规则然后再进行下一步。 并确保您已写入真实的用户名和密码。

答案 2 :(得分:0)

首先检查您的机器是否配置了您正在尝试的IP地址。

尝试从其他计算机ping它。

尝试nslookup获取相同的IP地址。

如果结果均为正数,则表示您的机器已配置为IP地址

如果有任何一个失败,请尝试配置您的IP,然后重试。

Connection object = DriverManager.getConnection("jdbc:mysql://127.xx.xx.x:3306/dbname","username","password");

配置后使用上面的代码。

答案 3 :(得分:0)

默认情况下,某些数据库服务器禁用远程访问。您必须启用远程访问。 如果您使用的是mySQL,那么就是解决方案。

1.Go to my sql bin folder or add it to PATH
2.Login to root by mysql -uroot -proot (or whatever the root password is.)
3.On success you will get mysql>
4.Provide grant access all for that user.

查询以启用访问。

GRANT ALL PRIVILEGES ON *.* TO 'username'@'IP' IDENTIFIED BY 'password';

此处IP是您要允许远程访问的IP地址,如果我们将%任何IP地址都可以远程访问。