2017-12-19 12 views
1

私は、JavaとMySQLデータベースを使用してデスクトップアプリケーションを構築しています。デスクトップアプリケーションがMicrosoftサーバー上のMySQL DBにアクセスする方法を教えてください。

MySQLデータベースは、デスクトップアプリケーション内で接続されているはずであり、Microsoft Windows Server 2012 R2 StandardのMySQLサーバーに格納されています。

同じネットワーク上の2つの異なるPCにデスクトップアプリケーションをインストールしました。

(サーバとクライアントPC上のアプリ上だから、DB)

問題がある: クライアントPCはMySQLのDBにアクセスすることはできませんので、デスクトップアプリケーションは、動作していません。

私の質問は以下のとおりです。

  • 私はクライアントPC上のデスクトップアプリケーションがサーバー上で MySQLのDBにアクセスすることを可能にするにはどうすればよいですか?

  • のコードを変更して、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サーバでこの設定を確認する必要があります。 –

関連する問題