编写了一段代码测试数据库连接,用本机的各种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都测试成功。