0

jdbc を使用して mysql に接続しようとすると、localhost に正常に接続されたことを意味します。しかし、localhost を自分の IP アドレスに置き換えると、接続されていないことを意味します。

disは私のコーディングです:

package com.retrieve;
import java.sql.*;

public class retrieve{
     public static void main(String[] args) {
             System.out.println("Getting All Rows from a table!");
             Connection con = null;
             String url = "jdbc:mysql://192.168.1.249:3306/";
             String db = "login";
             String driver = "com.mysql.jdbc.Driver";
             String user = "root";
             String pass = "";
             try{
             Class.forName(driver).newInstance();
             con = DriverManager.getConnection(url+db, user, pass);
             try{
             Statement st = con.createStatement();
             ResultSet res = st.executeQuery("SELECT * FROM  login");
             System.out.println("username: " + "\t" + "password: ");
             while (res.next()) {
                     String s = res.getString("username");
             String s1 = res.getString("password");
             System.out.println(s1 + "\t\t" + s);
             }
             con.close();
             }
             catch (SQLException s){
             System.out.println("SQL code does not execute.");
             }  
             }
             catch (Exception e){
             e.printStackTrace();
             }
             }
           }

エラーは次のとおりです。

テーブルからすべての行を取得! java.sql.SQLException: データ ソースが接続の確立を拒否しました。サーバーからのメッセージ: com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:650 で「ホスト '192.168.1.249' はこの MySQL サーバーに接続できません」 ) com.mysql.jdbc.Connection.createNewIO(Connection.java:1808) で com.mysql.jdbc.Connection.(Connection.java:452) で com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:411) で) java.sql.DriverManager.getConnection(DriverManager.java:582) で java.sql.DriverManager.getConnection(DriverManager.java:185) で com.retrieve.retrieve.main(retrieve.java:15) で

4

4 に答える 4

0

MySQL サーバーでは、ユーザーが指定された IP からデータベースにアクセスできるようにするためのアクセス許可を追加する必要があります。

mysql コンソールから次のクエリを実行します。

GRANT ALL ON YOUR_DB.* TO 'root'@'192.168.1.249';
于 2012-05-29T05:01:30.100 に答える
0

mysql サーバーにユーザー 'login'@'192.168.1.249' を作成します。

mysql は、'name' (ここでは - 指定したログイン) と 'host' (ユーザーがサーバーに接続するアドレス) からユーザーを構築します。「%」文字を使用して「すべてのホスト」を表すことができます。

ドキュメントのこのセクションを読むことを検討してください。

http://dev.mysql.com/doc/refman/5.1/en/user-account-management.html

于 2012-05-29T05:01:52.507 に答える
0
Please check your port .If you changed your port number ,you got this error like 

「com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: 通信リンク障害」

于 2014-11-13T10:00:07.970 に答える
0

Statment、オブジェクトなどのすべてのリソースを閉じるようにしてくださいResultSet。また、@ Jigar が言及しているように、ユーザーにも権限を付与してください。

于 2012-05-29T05:03:47.410 に答える