1. 程式人生 > >window下的java程式連線linux系統的mysql資料庫

window下的java程式連線linux系統的mysql資料庫

實現的功能: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對映到域名上,外網通過訪問域名和對應對映的埠號20151002155501

3.navicat for mysql測試linux資料庫的連線是否成功

20151002160854

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

[[email protected] 桌面]# 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 [email protected](using password:NO)”

原因:沒有給遠端登入使用者新增所有機器都能訪問的許可權

解決方案:

新增命令如下:

1)grant all on *.* to 使用者名稱@"%" identified by "密碼";

2)flush privileges.

其中:

*.*表示賦予使用者操作伺服器上所有資料庫所有表的許可權;

使用者名稱可以是localhost,這裡我填寫root;

’%'表示從任何地址連線,這裡我填寫對映的域名.

20151002162813

下面是連線結果:

mysql建立的測試表:

3123

eclipse下執行java測試程式:

6564cd

通過以上的方法,實現了在window下訪問linux的mysql資料庫,連線的時間比較長