首页 > 解决方案 > 无法从外部 IPV4 地址连接到 MySQL 服务器

问题描述

一段时间以来,我的 Java 应用程序一直存在问题。我已经尝试了几种选择,试图找出从新驱动程序到注册驱动程序到更改我的 MySQL 数据库权限的问题。我只有在连接外部 IP 时才会遇到这个问题。我认为这可能与 IPV6 有关,但我试图在我的树莓派上禁用它,但是当我运行“netstat -tlnp”时,我得到了这个:

(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:8005          0.0.0.0:*               LISTEN      547/java            
tcp        0      0 0.0.0.0:8200            0.0.0.0:*               LISTEN      547/java            
tcp        0      0 0.0.0.0:8009            0.0.0.0:*               LISTEN      547/java            
tcp        0      0 0.0.0.0:5900            0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::5900                 :::*                    LISTEN      -                   
tcp6       0      0 :::8080                 :::*                    LISTEN      -                   
tcp6       0      0 :::22                   :::*                    LISTEN 

这表明 MySQL 服务器仍在运行 tcp6,端口为 8080,我将其从标准 3600 更改。我的 java 主类如下所示:`public static String IP; //MySQL服务器IP的NULL变量 public static final String user = "user"; //mySQL服务器的用户名 public static final String password = "pass"; //mySQL 服务器的密码 TODO 弄清楚如何隐藏密码 static Connection conn; //NULL 连接以连接到 mySQL 服务器 public static Sc​​anner console = new Scanner(System.in); //用于从控制台获取数字和字符串

/**
 * Runs the program
 * @param args
 */
public static void main(String[] args) {
    System.out.print("Internal or External IP (1 for Internal or 2 for external): ");
    int choice = console.nextInt();
    switch (choice){
    case 1:
        IP = "10.0.0.183";
        break;
    case 2:
        IP = "external ipv4 address";
        break;
    }
    //TRY CATCH method to ensure that the mySQL connection was successful
    try{
        conn = DriverManager.getConnection("jdbc:mysql://"+IP+":8080/mydb",user,password);
    }catch(SQLException e){
        System.out.println(e.getLocalizedMessage());
        System.exit(1);
    }`

这是我尝试连接到我的外部 IPV4 地址时遇到的错误“通信链接失败”

最后一个成功发送到服务器的数据包是 0 毫秒前。驱动程序尚未收到来自服务器的任何数据包。`

有没有人有解决方案或需要我的其他任何东西来帮助解决这个问题!谢谢!

标签: javamysqljdbcraspberry-piipv4

解决方案


您是否使用此 10.0.0.183 创建了 MySQL 用户?请使用此创建 MySQL 用户并提供授权并检查它


推荐阅读