您的位置:首页 > 运维架构 > Linux

window下的java程序连接linux系统的mysql数据库

2015-10-03 14:47 891 查看
实现的功能:window下连接linux的mysql数据库

准备的环境

windows1.已经编写好的连接数据库的java测试程序:

package com.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
* ResultSet结果集的基本用法(executeQuery()将会返回ResultSet结果集)
* @author zanzan
*
*/
public class Demo2 {
public static void main(String[] args){

Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {

Class.forName("com.mysql.jdbc.Driver");
long start = System.currentTimeMillis();
conn = DriverManager.getConnection("jdbc:mysql://与linux的ip映射的域名:映射的端口号/数据库名称", "mysql数据库登陆名", "密码");

System.out.println(conn);

//进行数据库的查询
String sql = "select id,name from test where id>?";//?表示占位符

//建立PraparedStatemen对象进行SQL静态语句的操作,同时返回PraparedStatememnt对象,导入PraparedStatement包
ps = conn.prepareStatement(sql);

ps.setObject(1, 0);

rs = ps.executeQuery();

//将结果集进行遍历

while(rs.next()){
System.out.println(rs.getInt(1)+"---"+rs.getString(2));
}
long end = System.currentTimeMillis();
System.out.println("建立与数据库的连接所需要的时间"+(end-start)+"ms");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{

//关闭顺序是按照先开后关的原则
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(ps!=null){
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}


2.由于是linux是在内网,我使用花生壳将内网的ip映射到域名上,外网通过访问域名和对应映射的端口号



3.navicat for mysql测试linux数据库的连接是否成功





linux:

1.vmware下安装centos6.4

2.通目前下载的主流Linux系统版本基本上都集成了mysql数据库在里面

rpm -qa | grep mysql  // 这个命令就会查看该操作系统上是否已经安装了mysql数据库


rpm -e --nodeps mysql  // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除


yum list | grep mysql //查看数据库


yum install -y mysql-server mysql mysql-deve//通过yum方式安装mysql数据


通过yum安装数据库可以省去很多麻烦

3.用ifconfig得到linux的ip

[root@localhost 桌面]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:88:CD:97
inet addr:<span style="background-color: rgb(255, 0, 0);">192.168.0.116</span> Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe88:cd97/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4281 errors:0 dropped:0 overruns:0 frame:0
TX packets:2053 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3985317 (3.8 MiB) TX bytes:160402 (156.6 KiB)


用navicat测试:

1出现 2003-Can’t connect to MySQL on ’192.168.1.2’(10061);

原因:MySQL不准许远程连接。

解决方案:

1)在服务端MySQL文件夹下找到my.ini文件。修改bind-address=127.0.0.1 为 bind-address=0.0.0.0 ;(在MySQL 5的my.ini中未发现此项,则试着添加)

2)重新启动MySQL服务。(service mysqld restart)

2.出现“1045-Access denied for user root@IT(using password:NO)”

原因:没有给远程登录用户添加所有机器都能访问的权限

解决方案:

添加命令如下:

1)grant all on *.* to 用户名@"%" identified by "密码";

2)flush privileges.

其中:

*.*表示赋予用户操作服务器上所有数据库所有表的权限;

用户名可以是localhost,这里我填写root;

’%'表示从任何地址连接,这里我填写映射的域名.





下面是连接结果:

mysql创建的测试表:





eclipse下运行java测试程序:





通过以上的方法,实现了在window下访问linux的mysql数据库,连接的时间比较长
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: