面试问题求解,无MySQL驱动情况下

有如下问题:
只用记事本、jdk,没有MySQL驱动,知道远程MySQL的ip、用户、密码,怎么把它一个表的数据弄到本地?
求解

面试的问题一个比一个奇葩.............. 思路如下次
使用记事本创建一个Java源代码文件
在Java文件中,引入必要的Java IO类如下

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

main方法中,设置远程MySQL数据库的连接信息,包括IP、端口、用户名、密码等

// 连接信息
String url = "jdbc:mysql://远程MySQL服务器IP:端口号/数据库名";
String username = "用户名";
String password = "密码";

创建一个用于保存数据的文本文件,例如data.txt

String filePath = "data.txt";

建立与MySQL数据库的连接,并执行SQL查询语句,将结果写入文本文件:

执行shell
如有帮助给个采纳谢谢谢v

远程mysql没有驱动也可以登录,登录之后导出就行了

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7612048
  • 这篇博客你也可以参考下:本地MySQL数据库允许用任意ip连接访问
  • 除此之外, 这篇博客: mysql 绑定内网ip 允许指定ip访问 新增用户 授权 修改密码中的 针对不同的需要使用不同的用户和权限,避免多人使用一个账号 (5.7) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •      1、新建用户
      MySQL -u root -p 
      CREATE USER 'test'@'localhost'  IDENTIFIED BY '1234'; #本地登录 
      CREATE USER 'test'@'%'  IDENTIFIED BY '1234'; #远程登录 
      quit 
      mysql -u test -p #测试是否创建成功
      2. 授权test用户拥有testDB数据库的所有权限
      grant all privileges on testDB.* to “test”@”localhost” identified by “1234”; 
      flush privileges; #刷新系统权限表
      3.指定部分权限给用户:
      grant select,update on testDB.* to “test”@”localhost” identified by “1234”; 
      flush privileges; #刷新系统权限表
      4.授权test用户拥有所有数据库的某些权限
      grant select,delete,update,create,drop on . to test@”%” identified by “1234”; #”%” 表示对所有非本地主机授权,不包括localhost
      flush privileges;
      5.修改指定用户密码
      update mysql.user set authentication_string=password(“新密码”) where User=”test” and Host=”localhost”; 
      flush privileges;
    

  • 以下回答由chatgpt基于相关博客总结生成:

    问题解答:

    根据你给出的条件,只有记事本和JDK,没有MySQL驱动程序。但你知道远程MySQL数据库的IP地址、用户名和密码。以下是将远程数据库中的一个表的数据导入到本地的解决方案:

    1. 首先,你需要从MySQL官方网站下载并安装MySQL Connector/J驱动程序,这是用于连接MySQL数据库的Java驱动程序。将下载的驱动程序放置在计算机上可存取的位置。

    2. 创建一个Java项目文件,导入刚刚下载的MySQL Connector/J驱动程序的jar包。

    3. 在Java项目中,使用JDBC来连接远程MySQL数据库。以下是一个简单的示例代码:

    import java.sql.Connection;
    import java.sql.DriverManager;
    
    public class Main {
        public static void main(String[] args) {
            String remoteIP = "远程MySQL数据库的IP地址";
            String dbName = "数据库名";
            String tableName = "表名";
            String username = "用户名";
            String password = "密码";
    
            try {
                // 加载驱动程序
                Class.forName("com.mysql.cj.jdbc.Driver");
    
                // 创建连接
                Connection connection = DriverManager.getConnection("jdbc:mysql://" + remoteIP + "/" + dbName, username, password);
    
                // 导入数据的代码
    
                // 关闭连接
                connection.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    

    在上述代码中,你需要将"远程MySQL数据库的IP地址"、"数据库名"、"表名"、"用户名"和"密码"替换成实际的值。

    1. 使用JDBC连接成功后,你可以执行相应的SQL语句来导入数据。以下是一个示例代码,用于查询远程表中的数据并将其插入到本地表中:
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    public class Main {
        public static void main(String[] args) {
            String remoteIP = "远程MySQL数据库的IP地址";
            String dbName = "数据库名";
            String remoteTableName = "远程表名";
            String localTableName = "本地表名";
            String username = "用户名";
            String password = "密码";
    
            try {
                // 加载驱动程序
                Class.forName("com.mysql.cj.jdbc.Driver");
    
                // 创建连接
                Connection remoteConnection = DriverManager.getConnection("jdbc:mysql://" + remoteIP + "/" + dbName, username, password);
                Connection localConnection = DriverManager.getConnection("jdbc:mysql://localhost/" + dbName, username, password);
    
                // 查询远程表中的数据
                Statement remoteStatement = remoteConnection.createStatement();
                ResultSet remoteResultSet = remoteStatement.executeQuery("SELECT * FROM " + remoteTableName);
    
                // 将查询结果插入到本地表中
                Statement localStatement = localConnection.createStatement();
                while (remoteResultSet.next()) {
                    int id = remoteResultSet.getInt("id");
                    String name = remoteResultSet.getString("name");
                    // 获取其他字段的数据
    
                    String insertQuery = "INSERT INTO " + localTableName + " (id, name, ...) VALUES (" + id + ", '" + name + "', ...)";
                    localStatement.executeUpdate(insertQuery);
                }
    
                // 关闭连接
                remoteResultSet.close();
                remoteStatement.close();
                remoteConnection.close();
                localStatement.close();
                localConnection.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    

    在上述代码中,你需要将"远程MySQL数据库的IP地址"、"数据库名"、"远程表名"、"本地表名"、"用户名"和"密码"替换成实际的值,并根据你的表结构调整插入语句。

    1. 运行你的Java程序,它将连接远程MySQL数据库、查询数据并将数据插入到本地表中。

    请注意,以上代码仅为示例,需要根据实际情况进行调整和扩展。

    希望以上解决方案对你有帮助。如果你有任何疑问,请随时提问。