リモート・データベース・サーバーのMySQLに接続します

序文

JDBCについて学ぶこの日の午後は、ローカルPC上で私のリモートサーバー上のMySQLデータベースへのアクセスを考えてみてください。これは知りませんしようとしない、テストはああ、大小さまざまな問題、情報検索のすべての種類に変更するための変更が発生した午後です。私は、彼らは、レコード、いくつかの大きな問題についての記録についてブログを書く必要があり、Gaosiことができます。

何JDK、MySQLのインストール構成は言うことはありません。

次のように私は、ローカルのJavaコードの最初の準備しました:

(このコードは、新人のチュートリアルのコピーから来ている:www.runoob.com/java/java-m ...ちょうど私のサーバーのIPにはlocalhost)

import java.sql.*;

public class JDBCTest {

    // JDBC 驱动名及数据库 URL
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    static final String DB_URL = "jdbc:mysql://远程服务器IP:3306/mcl";

    // 数据库的用户名与密码,需要根据自己的设置
    static final String USER = "用户名";
    static final String PASS = "密码";

    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        try{
            // 注册 JDBC 驱动
            Class.forName(JDBC_DRIVER);

            // 打开链接
            System.out.println("连接数据库...");
            conn = DriverManager.getConnection(DB_URL,USER,PASS);

            // 执行查询
            System.out.println(" 实例化Statement对象...");
            stmt = conn.createStatement();
            String sql;
            sql = "SELECT id, name, url FROM websites";
            ResultSet rs = stmt.executeQuery(sql);

            // 展开结果集数据库
            while(rs.next()){
                // 通过字段检索
                int id  = rs.getInt("id");
                String name = rs.getString("name");
                String url = rs.getString("url");

                // 输出数据
                System.out.print("ID: " + id);
                System.out.print(", 站点名称: " + name);
                System.out.print(", 站点 URL: " + url);
                System.out.print("\n");
            }
            // 完成后关闭
            rs.close();
            stmt.close();
            conn.close();
        }catch(SQLException se){
            // 处理 JDBC 错误
            se.printStackTrace();
        }catch(Exception e){
            // 处理 Class.forName 错误
            e.printStackTrace();
        }finally{
            // 关闭资源
            try{
                if(stmt!=null) stmt.close();
            }catch(SQLException se2){
            }// 什么都不做
            try{
                if(conn!=null) conn.close();
            }catch(SQLException se){
                se.printStackTrace();
            }
        }
        System.out.println("Goodbye!");
    }
}
复制代码

次に、MySQLサーバのデータベースに構築MCL、新しいライブラリテーブルのウェブサイトのMCL上のデータベース、および5つのレコードを挿入します。(もちろん、これらはまたやって新人のチュートリアルを輝いています)

次に、私は単にネイティブJavaコードを実行するために開始するナイーブだろう、結果はどのような単純なことでし、それを想像することができます!TNND!

今後質問:

質問1:

最初の出会いは、ClassNotFoundExceptionがあります。これは言い難い、JDBCコネクタのjarパッケージをインポートされません。まずこのjarパッケージをダウンロードし、新人のチュートリアルでは、友人へのリンク掲載static.runoob.com/download/my ...直接ちゃんとダウンロードにポイントを。ダウンロードした後、プロジェクトにインポートします。

質問2:

その後、サーバーの問題があり、サーバが知っている情報を確認し、アクセスを拒否され、サーバーのセキュリティグループを設定する必要があり、アリのクラウドサーバがその割り当てられています:

〜私はこの問題は私がデータにアクセスさせていただきます解決されると思うが、それは本当にナあまりにもナイーブでした

質問3が来ています!

質問3:

デフォルトでは、MySQLは唯一のリモートデバイスへのアクセスを許可する場合は、あなたがMySQLの設定ファイルを変更する必要があり、ローカルIP(ローカルホスト/ 127.0.0.1)アクセスを許可します。

ディレクトリへの端子CDに:/etc/mysql/mysql.conf.d、そこに内部の次の2つのファイルが変更されるのでmysqld.cnfです

Vimは、ファイルを編集ボックスに次のようにコメントアウトして、保存しmysqld.cnf。

アクセス権を持っている、あなたは、次の方法を使用してユーザーを認証することができ、顧客は、MySQL、エンドユーザーにアクセスすることを可能にするために、終了していない:MySQLの>グラントすべてONは 「%」@ USER_NAMEするには、「USER_PASSWORD」で識別される;上記のコマンドのユーザー権限を付与することができます任意のデータベース(データベース)とMySQLのテーブル(表)にアクセスします。

(ここでは参考:zhidao.baidu.com/question/28 ...、の首長には本当に感謝して〜)

さて、最後に、あなたは喜んで、リモート・データベースにアクセスすることができます!(重要でない、WARN無視)

問題が解決されている、と私は上記の問題に起因し、Navicatはを経由してリモートでデータベースに接続しようとする場合が解決された後、プロセスは比較的スムーズです。

直接、Navicatはを開き、リンクをクリックして、サーバーのIP、データ・タイプ、ユーザー名、パスワード(パスワードのデータベース、サーバーではなく)を入力します。

そして、あなたは喜んでローカルに直接挿入し、それを削除することができます!

概要

もともと午後コードコンパイラの理論を見に行くされて、私は私が行っコードを見に行ったことを取得し、それは非常に高速である必要があり、それをしようと思ったが、結果は...... emmmm

しかし、その後も、私は物事の多くのサーバーデータベースを構成し、学んだ多くの理解を持っているだけでなく、Diudiu JDBCプログラミングを学びました!さらにされており、問題は、情報を見つけることがたくさんある必要があります......

(グッドおざなり要約ではなく、手動で犬の頭を書くためにあなたを強制的にいずれか......)

参考資料

ルーキーチュートリアル:www.runoob.com/java/java-m ...

リモート・データベース・サーバーに接続する方法MySQLのNavicatは:zhidao.baidu.com/question/28 ...

紹介のjarパッケージIDEA:blog.csdn.net/superinzagh ...

おすすめ

転載: juejin.im/post/5cf3a9c66fb9a07ed36e92d5