2012-08-17 89 views
1

我试图向我虚拟机中托管的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"); 
    } 

    } 
} 

我希望有人能够帮助这一点,因为我的工作这个问题有一段时间了。

感谢

+0

这个例外是什么意思? – tdammers 2012-08-17 12:28:41

+1

忽略System.out.println(“成功”); – w4beda 2012-08-17 12:29:15

+0

有没有例外 – w4beda 2012-08-17 12:29:39

回答

2

只有两个想法:

  • 是MySQL的配置为侦听所有地址,而不仅仅是本地的吗? bind-address配置指令的价值是什么? 0.0.0.0表示“侦听所有接口”,而127.0.0.1表示“侦听本地主机接口,仅用于从该主机访问”。
  • 也许你可以在你的catch语句中提取关于这个问题的一些细节?

希望这有助于!

+0

请给我一个提示如何配置它在这里监听所有接口的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

+0

我仍然不知道它是否是问题,但为了让它侦听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

+0

有以下部分:“现在,默认情况下,只是在本地主机上侦听,而不是跳过网络,而这种本地主机更加兼容并且不安全。”绑定地址127.0.0.1。我应该将其更改为0.0.0.0吗?如果只是这种变化,它不能解决问题。 – w4beda 2012-08-17 12:56:01

1

如果我理解正确的问题,要连接VM数据库,然后检查以下步骤

1.jdbc:mysql的://10.0.0.1/feedback。

2.确保没有防火墙阻止访问端口3306

3.确保你与被允许从该特定的主机连接连接用户。

+0

如果我以root身份登录,我必须授予权限吗? – w4beda 2012-08-17 12:50:30

+0

即使您以root身份登录,也一定要在您的MySQL模式中向该主机和用户授予适当的权限。 – Ami 2012-08-17 13:00:22

+0

我以为root拥有所有权限,但我错了。谢谢你们,你是伟大的:) – w4beda 2012-08-17 13:04:51