java代码连接MySql不能通过IP访问的解决方法,只能localhost 和 127.0.0.1访问

编写了一段代码测试数据库连接,用本机的各种IP进行测试连接mysql数据库,用127.0.0.1和localhost 访问都是没有问题的,能够正常访问数据库,但是用IP不能访问。经过测试后,找到正确方法贴上。

代码如下:

package com.jr;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class testmysql {
    public static void main(String[] args){
        //String URL="jdbc:mysql://127.0.0.1:3306/hadoopdb?";

         //String URL="jdbc:mysql://localhost:3306/hadoopdb?";
        //String URL="jdbc:mysql://192.168.2.1:3306/hadoopdb?";                //VMnet1 IP
        //String URL="jdbc:mysql://192.168.1.9:3306/hadoopdb?";                //无限局域网IP
        String URL="jdbc:mysql://192.168.193.1:3306/hadoopdb?";              //VMnet8 IP
        String USER="admin";
        String PASSWORD="123456";
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn=DriverManager.getConnection(URL, USER, PASSWORD);
            Statement st=conn.createStatement();
            ResultSet rs=st.executeQuery("select * from users");
            while(rs.next()) {
                System.out.println(rs.getString("name"));
            }
            rs.close();
            st.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

本机IP:

 

 

 

一般新安装的mysql数据库默认是不开启ip访问的,这样我们在应用与数据库不在同一服务器时就需要开启这种模式,

解决方法:

cmd方式进入mysql命令行进入mysql的bin目录下,比如数据库用户名为root,密码为 123456

mysql –uroot –p123456       //登陆mysql ,

use mysql;               //切换到mysql数据库

update user set host='%' where user='root' and host='localhost';       //修改host为通配符,任何ip都可访问

grant all privileges on *.* to ’root’@’%’ identified by ’root’;             //赋予root权限 
flush privileges; //                在不重启的情况下生效或者重启mysql服务,将配置刷进内存 

以上步骤就可以使IP可以连接了,如果还不能连接就重启mysql服务

5.重新启动mysql

进入到mysql 的bin目录下

先关闭mysql数据库: net stop mysql

然后重新启动mysql数据库:  net start mysql

完毕。

再进eclipse运行代码即可成功了。我是以上各种网卡的IP都测试成功。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,它提供了一套与平台无关的API,使得Java程序员可以使用统一的方式来访问各种关系型数据库。 连接MySQL数据库的关键代码: Class.forName("com.mysql.jdbc.Driver"); //加载MySQL驱动 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");//连接MySQL数据库 连接SQL数据库的关键代码: Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //加载SQLServer驱动 Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=test", "sa", "password");//连接SQLServer数据库 连接Oracle数据库的关键代码: Class.forName("oracle.jdbc.driver.OracleDriver"); //加载Oracle驱动 Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:test", "username", "password");//连接Oracle数据库 2. 使用JDBC连接数据库的基本步骤包括: 1) 加载数据库驱动程序 2) 创建连接对象 3) 创建Statement对象 4) 执行SQL语句 5) 处理结果集 6) 释放资源 每一步所涉及的类及关键代码如下: 1) 加载数据库驱动程序 Class.forName("com.mysql.jdbc.Driver"); 2) 创建连接对象 Connection conn = DriverManager.getConnection(url, user, password); 3) 创建Statement对象 Statement stmt = conn.createStatement(); 4) 执行SQL语句 ResultSet rs = stmt.executeQuery(sql); 5) 处理结果集 while(rs.next()){ //处理结果集 } 6) 释放资源 rs.close(); stmt.close(); conn.close(); 3. URL(Uniform Resource Locator)是一种统一资源定位符,用于标识互联网上的资源。它的格式一般为:协议://主机名:端口号/路径,其中协议、主机名、端口号和路径都是可选的。 例如:https://www.baidu.com,其中协议为https,主机名为www.baidu.com,路径为空。 4. Java网络编程中有两种Socket:ServerSocket和Socket。 ServerSocket用于在服务器端创建一个监听端口,等待客户端连接。使用ServerSocket的基本步骤包括: 1) 创建ServerSocket对象并指定监听端口号 2) 调用accept()方法等待客户端连接 3) 接收客户端连接并创建Socket对象 4) 创建输入输出流进行数据传输 5) 关闭连接 例如: ServerSocket serverSocket = new ServerSocket(8888); //创建ServerSocket对象 Socket socket = serverSocket.accept(); //等待客户端连接 InputStream is = socket.getInputStream(); //获取输入流 OutputStream os = socket.getOutputStream(); //获取输出流 //进行数据传输 is.close(); os.close(); socket.close(); Socket用于在客户端创建一个连接到服务器端的Socket对象,进行数据传输。使用Socket的基本步骤包括: 1) 创建Socket对象并指定服务器IP地址和端口号 2) 创建输入输出流进行数据传输 3) 关闭连接 例如: Socket socket = new Socket("127.0.0.1", 8888); //创建Socket对象 InputStream is = socket.getInputStream(); //获取输入流 OutputStream os = socket.getOutputStream(); //获取输出流 //进行数据传输 is.close(); os.close(); socket.close(); 5. 使用Socket建立连接的基本程序框架包括: 1) 创建Socket对象并指定服务器IP地址和端口号 2) 创建输入输出流进行数据传输 3) 发送数据给服务器端 4) 接收服务器端返回的数据 5) 关闭连接 例如: Socket socket = new Socket("127.0.0.1", 8888); //创建Socket对象 InputStream is = socket.getInputStream(); //获取输入流 OutputStream os = socket.getOutputStream(); //获取输出流 //发送数据给服务器端 os.write("hello".getBytes()); os.flush(); //接收服务器端返回的数据 byte[] buffer = new byte[1024]; int len = is.read(buffer); String result = new String(buffer, 0, len); System.out.println(result); //关闭连接 is.close(); os.close(); socket.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值