连接到Java虚拟机中托管的MYSQL数据库
我试图向我虚拟机中托管的MySQL数据库发送请求,但它对我来说不起作用 。连接到Java虚拟机中托管的MYSQL数据库
这里是我的设置:
- 最新的Ubuntu服务器魔女的Apache2 MySQL的安装,并正在
- 数据库“反馈”用表“测试”建立和充满试验数据
- 网络适配器已桥接。服务器的IP是(如果我输入ifconfig)10.0.0.1,我的电脑的IP是10.0.0.4。
- 手动打开端口3306。罐子的mysql连接器java的5.1.21-bin.jar是引用Libary
这里是Java代码:
import java.sql.*;
public class Main {
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
System.out.println("Sucess");
Connection con = DriverManager.getConnection("jdbc:mysql://10.0.0.1/feedback","root","myrootpassword");
con.setReadOnly(true);
} catch (Exception e) {
System.err.print("NO CONNECTION");
}
}
}
我希望有人能够帮助这一点,因为我的工作这个问题有一段时间了。
感谢
只有两个想法:
- 是MySQL的配置为侦听所有地址,而不仅仅是本地的吗? bind-address配置指令的价值是什么? 0.0.0.0表示“侦听所有接口”,而127.0.0.1表示“侦听本地主机接口,仅用于从该主机访问”。
- 也许你可以在你的catch语句中提取关于这个问题的一些细节?
希望这有助于!
请给我一个提示如何配置它在这里监听所有接口的mysql服务器ouptput:成功发送到服务器的最后一个数据包是0毫秒前。驱动程序尚未收到来自服务器的任何数据包。 \t在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) \t在sun.reflect.NativeConstructorAccessorImpl.newInstance(来源不明) \t在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(来源不明) \t在java.lang.reflect中.Constructor.newInstance(Unknown Source) \t at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) – w4beda 2012-08-17 12:38:21
我仍然不知道它是否是问题,但为了让它侦听correclty,请编辑/ etc/mysql/my.cnf,确保没有'skip-networking'这一行(或者前面注释了一个破折号字符),并且有一个(没有注释的)'bind-address = 0.0.0.0'行。如果你做了任何编辑,请用'sudo /etc/init.d/mysql restart'重新启动mysql。 – niconoe 2012-08-17 12:43:30
有以下部分:“现在,默认情况下,只是在本地主机上侦听,而不是跳过网络,而这种本地主机更加兼容并且不安全。”绑定地址127.0.0.1。我应该将其更改为0.0.0.0吗?如果只是这种变化,它不能解决问题。 – w4beda 2012-08-17 12:56:01
这个例外是什么意思? – tdammers 2012-08-17 12:28:41
忽略System.out.println(“成功”); – w4beda 2012-08-17 12:29:15
有没有例外 – w4beda 2012-08-17 12:29:39