使用 mySql 服务器等虚拟机

使用 mySql 服务器等虚拟机

我正在开发一个 Java 程序,我需要一个数据库。现在我正在使用 MAMP,它非常简单,但我有一个虚拟机(ubuntu 服务器),我需要使用 vitualBox 将我的 Java 程序与这个虚拟机连接起来。

情況:

  • 我在我的 Mac 上安装了 VirtualBox,并且安装了一个 ubuntu-server 机器
  • 在VB的网络设置中设置“桥接适配器”
  • 我在 ubuntu-server 上安装了 mysql,并创建了一个简单的数据库(在 ubuntu 上一切运行良好)
  • 通过 ubuntu 执行 ifconfig 我得到了 ip: 192.168.1.217

因此在 java 程序中我创建了这个函数:

public static Connection connect(String host, int port, String dbName, String user, String passwd)
{
    Connection dbConnection = null;
    try
    {
        String dbString = null;
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        dbString = "jdbc:mysql://" + host + ":" + port + "/" + dbName;

        dbConnection = DriverManager.getConnection(dbString, user, passwd);

    }
    catch (Exception e)
    {
        System.err.println("Failed to connect with the DB");
        e.printStackTrace();
    }

    return dbConnection;
}

在 main() 中我使用:

Connection con = connect(1, "192.168.1.217", 3306, "Ciao", "root", "cocacola");

3306 是默认值。我不知道它是否正确,它在 mamp 上有效,但是……我如何才能找到必须与 VB 一起使用的正确端口?

当我运行该程序时,我得到了异常...出了什么问题?

答案1

检查/etc/my.cnf//etc/mysql/my.cnf文件中的 bind_address。您的 MySQL 默认绑定到 localhost,您应该将其设置为 0.0.0.0。

寻找:

bind-address            = 127.0.0.1

代替:

bind-address            = 0.0.0.0

如果你没有 my.cnf 文件,你可以创建它。在这种情况下,你至少需要以下内容:

[mysqld]
bind-address            = 0.0.0.0

答案2

你的方法采用了错误的参数。比较

public static Connection connect(String host, int port, String dbName, String user, String passwd)

Connection con = connect(1, "192.168.1.217", 3306, "Ciao", "root", "cocacola");

这意味着,当你创建字符串 dbString 时,你正在创建

jdbc:mysql://1:192.168.1.217/3306; 

但是,你的重载甚至不匹配,所以我很惊讶你能走到这一步(虽然我用的是 C# 而不是 Java,所以也许这没问题)!Connection connect 需要 5 个参数,但当你调用该方法时,你传递了 6 个!

我认为改变

Connection con = connect(1, "192.168.1.217", 3306, "Ciao", "root", "cocacola"); 

Connection con = connect("192.168.1.217", 3306, "Ciao", "root", "cocacola");

相关内容