java - 无法从 java 连接到 mysql。 mysql在另一个系统中

标签 java mysql

我想从java代码连接到mysql,其中mysql位于另一个系统中。 我在另一台机器“nilotpal”中创建了一个用户。 其他机器地址是192.168.92.93。 我能够 ping 通这台机器。我在哪里失踪了?有人可以帮忙吗?!!

我使用的程序是:

    import java.sql.*;

    public class FirstExample {

        static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
        static final String DB_URL = "jdbc:mysql://192.168.92.93:3306/tution";

        //  Database credentials
        static final String USER = "nilotpal";
        static final String PASS = "nilotpal";

        public static void main(String[] args) {
            Connection conn = null;
            Statement stmt = null;
            try{
                //STEP 2: Register JDBC driver
                Class.forName("com.mysql.jdbc.Driver");

                //STEP 3: Open a connection
                System.out.println("Connecting to database...");
                conn = DriverManager.getConnection(DB_URL,USER,PASS);

                //STEP 4: Execute a query
                System.out.println("Creating statement...");
                stmt = conn.createStatement();
                String sql;
                sql = "SELECT id, first, last, age FROM Employees";
                ResultSet rs = stmt.executeQuery(sql);

                //STEP 5: Extract data from result set
                while(rs.next()){
                    //Retrieve by column name
                    int id  = rs.getInt("id");
                    int age = rs.getInt("age");
                    String first = rs.getString("first");
                    String last = rs.getString("last");

                    //Display values
                    System.out.print("ID: " + id);
                    System.out.print(", Age: " + age);
                    System.out.print(", First: " + first);
                    System.out.println(", Last: " + last);
                }
                //STEP 6: Clean-up environment
                rs.close();
                stmt.close();
            conn.close();
        }catch(SQLException se){
            //Handle errors for JDBC
            se.printStackTrace();
        }catch(Exception e){
            //Handle errors for Class.forName
            e.printStackTrace();
        }finally{
            //finally block used to close resources
            try{
                if(stmt!=null)
                    stmt.close();
            }catch(SQLException se2){
            }// nothing we can do
            try{
                if(conn!=null)
                    conn.close();
            }catch(SQLException se){
                se.printStackTrace();
            }//end finally try
        }//end try

        System.out.println("Goodbye!");

        }//end main
    }//end FirstExample

最佳答案

引用Connect to mysql on a different server

还要确保mysql用户nilotpal有远程连接权限。否则 mysql-server 将不允许您的 nilotpal 用户远程登录。即来自您的服务器(来自程序)。

您可以从 mysql.user 表中确定这一点。

mysql> select Host,User from user where User = "root";
+------------+------+
| Host       | User |
+------------+------+
| 127.0.0.1  | root |
| ::1        | root |
| localhost  | root |
| sgeorge-mn | root |
| %          | root |
+------------+------+
4 rows in set (0.01 sec)

% 表示任何主机。

要创建具有远程连接权限的用户,请使用以下 mysql 查询:

mysql> CREATE USER 'nilotpal'@'%' IDENTIFIED BY 'nilotpal';

关于java - 无法从 java 连接到 mysql。 mysql在另一个系统中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30388768/

相关文章:

mysql - 如何查看 MySQL 中两个表之间的区别?

php - 合并 SQL 记录

java - 如何在 Java 中反转列表的 HashMap ?

Java 表达式语言错误 ";"预期

java - 如何在使用 gson 创建的 Json 中添加自定义对象

php - Mysql 使用具有二进制数据类型的 where 子句

mysql - 如何定义 View 的算法

PHP/MYSQL修改用户名和密码

java - 即使为空,如何干净地处理 java 8 流 "findFirst()"结果

java - 没有类定义的反序列化对象实例