从Java连接到托管在虚拟机中的MYSQL数据库
我试图连接到托管在虚拟机中的MySQL数据库,但它不起作用 对我来说 以下是我的设置:从Java连接到托管在虚拟机中的MYSQL数据库,java,mysql,jdbc,Java,Mysql,Jdbc,我试图连接到托管在虚拟机中的MySQL数据库,但它不起作用 对我来说 以下是我的设置: 最新Ubuntu服务器witch Apache2 mysql已安装并正在运行 数据库“反馈”,设置“测试”表并填写测试数据 网络适配器已桥接。服务器的IP是(如果我输入ifconfig)10.0.0.1,我的电脑的IP是10.0.0.4 端口3306已手动打开。jar mysql连接器java 5.1.21-bin.jar是一个引用库 以下是Java代码: import java.sql.*; publ
- 最新Ubuntu服务器witch Apache2 mysql已安装并正在运行
- 数据库“反馈”,设置“测试”表并填写测试数据
- 网络适配器已桥接。服务器的IP是(如果我输入ifconfig)10.0.0.1,我的电脑的IP是10.0.0.4李>
- 端口3306已手动打开。jar mysql连接器java 5.1.21-bin.jar是一个引用库
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是否配置为侦听所有地址而不仅仅是本地地址?绑定地址配置指令的值是多少?0.0.0.0表示“侦听所有接口”,而127.0.0.1表示“侦听本地主机接口,仅从该主机进行访问”
- 也许你可以在你的捕获声明中提取一些关于这个问题的细节
希望这有帮助 如果我正确理解了一个问题,请连接VM数据库,然后检查以下步骤 1.jdbc:mysql://10.0.0.1/feedback. 2.确保没有防火墙阻止对端口3306的访问
3.确保允许您连接的用户从此特定主机名进行连接。忽略System.out.println(“成功”);为什么你认为你没有连接?因为它在try/catch块中;如果没有它,它无论如何也不会工作,因为如果在输出中看到
NO CONNECTION
,那么方法需要一个,然后添加e.printStackTrace()
,并将跟踪添加到问题,因为连接con=driverManger.getConnection。。。断开try块(=>出现错误)我已尝试为该表达式指定自己的try/catch块。这一行绝对是原因。请给我一个提示,如何配置mysql服务器,使其在所有接口上侦听。异常输出:成功发送到服务器的最后一个数据包是0毫秒前的。驱动程序尚未从服务器收到任何数据包。位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)位于sun.reflect.DelegatingConstructorAccessorImpl.newInstance(未知源),java.lang.reflect.Constructor.newInstance(未知源)位于com.mysql.jdbc.Util.handleNewInstance(Util.java:411)我仍然不知道这是否是问题所在,但为了使其正确侦听,请编辑/etc/mysql/my.cnf,并确保没有行跳过网络(或者前面有破折号注释),并且有一行(未注释)绑定地址=0.0.0
行。如果您进行了任何编辑,请使用sudo/etc/init.d/mysql restart
重新启动mysql。这里有一节:“不再跳过网络,默认情况下现在只在本地主机上侦听,这是更兼容的,而且不安全的”。绑定-地址127.0.0.1。我是否应该将其更改为0.0.0.0?如果仅此更改,则无法解决问题。是的,只要您具有bind address=127.0.0.1
,它将不接受来自外部机器的连接(此处为非虚拟化机器)。这是强制性的,但可能还不够。另外,不要忘记在任何配置更改后重新启动mysql。我以为root拥有所有权限,但我错了。谢谢guy you's great:)如果我以root身份登录,我必须授予权限吗?确保在您的MySQL架构中向该主机和用户授予适当的权限,即使您以root身份登录。我以为root拥有所有权限,但我错了。谢谢你们,你们太棒了:)