mySql 서버와 같은 가상 머신 사용 try

Java 프로그램을 개발 중이며 데이터베이스가 필요합니다. 이제 MAMP를 사용하고 있으며 꽤 쉽지만 가상 머신 (우분투 서버)이 있고 vitualBox를 사용하여 Java 프로그램을이 가상 머신에 연결해야합니다.

그 상황:

  • Mac에 VirtualBox를 설치하고 우분투 서버 시스템을 설치했습니다.
  • VB의 네트워크 설정에서 “브리지 어댑터”설정
  • 우분투 서버에 mysql을 설치하고 간단한 데이터베이스를 만들었습니다 (모두 우분투에서 잘 작동합니다)
  • 우분투로 ifconfig를하고 ip를 얻습니다 : 192.168.1.217

그래서 자바 프로그램 에서이 기능을 만들었습니다.

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이 기본값입니다. 나는 정확한지 모르겠다. VB와 함께 사용해야하는 올바른 포트를 어떻게 찾을 수 있습니까?

프로그램을 실행하면 캐치 예외가 발생합니다. 무엇이 잘못 되었나요?



답변

bind_address에 대한 /etc/my.cnf/또는 /etc/mysql/my.cnf파일을 확인하십시오 . 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

답변

메소드가 잘못된 매개 변수를 사용합니다. 비교

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");