2017-12-19 25 views
1

저는 Java 및 MySQL 데이터베이스를 사용하여 데스크톱 응용 프로그램을 구축하고 있습니다.데스크톱 응용 프로그램이 Microsoft 서버의 MySQL DB에 액세스하는 것을 허용하는 방법은 무엇입니까?

MySQL 데이터베이스는 데스크톱 응용 프로그램 내에서 연결될 예정이며 Microsoft Windows Server 2012 R2 Standard의 MySQL 서버에 저장됩니다.

같은 네트워크에있는 두 대의 서로 다른 PC에 데스크톱 응용 프로그램을 설치했습니다.

(그래서 서버의 DB와 클라이언트 PC에서 응용 프로그램)

문제는 다음과 같습니다 데스크톱 응용 프로그램이 작동하지 , 클라이언트 때문에 PC를 액세스 할 수 없습니다 MySQL의 DB .

내 질문은 다음과 같습니다

  • 어떻게 서버에 의 MySQL DB에 액세스 할 수있는 클라이언트 PC의 데스크톱 응용 프로그램을 허용합니까?

  • 코드를 변경하여 Microsoft 서버의 데이터베이스에 연결해야합니까?

    public static Connection Connerdb() 
    { 
        try 
        { 
         Class.forName("com.mysql.jdbc.Driver"); 
         Connection con=DriverManager.getConnection("jdbc:mysql://localhost/TestDB",root, " "); 
         return con; 
        } 
        catch (ClassNotFoundException | SQLException e){ 
         JOptionPane.showMessageDialog(null, e); 
         return null; 
        } 
    } 
    
+0

바보 같은 질문이지만, 시도한 2 이외의 다른 클라이언트에서 구성 작업을 수행합니까? MySQL에 연결하려는 사용자가 "세션 생성"권한을 가지고 있습니까? – bakoyaro

+0

사실 나는 다른 PC에서 시도하지 않았지만 작동하지 않을 것이라고 생각합니다. MySQL에 연결하려는 사용자에게는 "세션 생성"권한이 없습니다. 내가 어떻게 그것을 줄 수 있니? – Manar

+0

아래의 @MartinStraus 응답을 참조하십시오. – bakoyaro

답변

0

당신은 JDBC URL에서 "localhost"를 가지고있다. MySQL 호스트의 IP 주소 나 DNS 이름을 사용해야합니다.

+0

좋은 캐치, 너무 큰 생각이었습니다! – bakoyaro

+0

도움 주셔서 감사합니다. 하지만 클라이언트 PC에서 데스크톱 애플리케이션을 실행하려고하면이 오류가 발생합니다 (java.sql.SQLException : null, 서버의 메시지 : "호스트 'pc1'이이 MySQL 서버에 연결할 수 없습니다.) – Manar

+0

더보기 클라이언트 문제보다 MySQL 구성 문제와 비슷합니다. MySQL에서는 사용자 식별이 연결 대상 호스트 인 경우 일부가됩니다. 대개 myuser @ %와 같은 이름의 사용자가 있으며 "%"는 "모든 호스트"를 의미합니다. 따라서 해당 사용자는 모든 호스트에서 연결할 수 있습니다. 그러나 사용자의 이름이 "myuser @ localhost"인 경우 MySQL이 실행중인 _ 호스트와 연결할 수 있으며 원격 클라이언트는 연결할 수 없습니다 (사용자의 경우). MySQL 서버에서이 설정을 확인해야합니다. –