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地址不起作用????
答案 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地址都可以远程访问。