JDBC로 MySql 접속하기

DB/JDBC : 2007. 6. 16. 19:54
반응형

Article요약 :

########################################
MySQL 설정법 - MS Windows 환경을 기준
작성일 : 2000.7.23
########################################

Article 내용 :

---------------------------------------
1. MySql이란 뭐죠?
---------------------------------------
MySql이란 DBMS의 일종입니다.
잘알려진 DBMS로는 ORACLE,DB2,Sybase,Infomix,.... Ingress,PostgreSQL...MiniSQL
국산으로는 UniSQL이란것이 있죠.
그중 공개용으로 발표되어 있는건 miniSQL,PostgreSQL,MySql..등이 있죠.
miniSQL은 개인(?)이 만들고있고, 작고 빠르지만, 인증시스템이 없죠.
PostgreSQL은 상용DBMS만큼의 성능과 기능을 기지고 있고 공개적인 개발이 이뤄지고있지만 덩치가 크고,
UNIX버전만 있죠. NT로 porting하는 방법은 나와 있는데 까다롭고...
MySQL은 작고 빠르고(ORACLE의 2~5배정도) 많은 Application에서 지원하고 있죠.
Windows용도 UNIX버전만큼 빠른 upgrade가 되고 있죠.


---------------------------------------
2. MySql 어디서 어떤 버전을 다운 받아야 하나요?
---------------------------------------
MySql 홈페이지 : http://www.mysql.com/
MySql관련 한글사이트 : http://www.taejun.pe.kr/

얼마전까지만해도 Win용 MySql은 shareware였고 버전도 UNIX버전보다 다소 뒤떨어졌었지만
이제는 GPL을 따르고 있고 , 버전도 UNIX와 같이 가고 있다. 한마디로 공짜로 쓸 수 있읍니다.

http://www.mysql.com/downloads/ 에서 최신버전으로의 링크를 따라가고 그 페이지에서
Standard binary (tarball) distributions 바로 아래
windows용(http://www.mysql.com/Downloads/MySQL-3.23/mysql-3.23.33-win.zip)을 받고

winzip이나 알집으로풀어 setup.exe를 실행시킴.

설치시 주의점 : 되도록 설치 디렉토리는 c:\mysql 로 할것.
만약 다른 드라이버일경우 c:\my.cnf파일을 만들고..... 등등의 귀찮은 일이 생김.
자세한 사항은 설치시 화면에 뜸.

---------------------------------------
3. MySql용 JDBC driver는 어디에 있나요?
---------------------------------------
JDBC는 http://www.worldserver.com/mm.mysql/ 에 가서
2.0.4 소스버전(http://www.worldserver.com/mm.mysql/dist/mm.mysql-2.0.4-src.jar)을
받은후 풀면 mysql.jar가 있는데 그걸쓰면됨.
소스버전말고 binary 버전( 약 108K )을 써도됨. 그건 소스버전의 mysql.jar와 동일한 이름임.
mysql.jar를 c:\jdk1.2.2\jre\lib\ext 에 복사하면 됩니다.

한글을 입출력 할때에는 converting하지 않습니다.
현재 JDBC2.0까지 지원됨.
내용을 봤더니 기특하게도 JDK 1.1.*에서는 JDBC 1.0만, Java2에서는 JDBC 2.0까지
지원되도록 아주 교묘(?)하게 만들어 놨음.

---------------------------------------
4. MySql은 어떻게 실행시키나요?
---------------------------------------
시작은 mysql설치 디렉토리 아래bin에(C:\mysql\bin) 가서 mysqld.exe 를 실행.
dos창이 잠시 보였다가 없어짐.
( 놀라지마세요. CTRL-ALT-DEL을눌러보면 mysqld-opt.exe(win95/98)나 mysqld-nt.exe(winnt/2000)가 실행중 )

확인법:
prompt> cd c:\mysql\bin
prompt> mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 3.23.21-beta

Type 'help' for help.

mysql>

c:\mysql\bin\mysql.exe는 mysql용 client program
이러한 메세지가 뜨면 정상적으로 MySql서버가 동작중임.
그리고 간단한 명령어 몇개를 입력해보죠.

mysql> show databases; --> 기본적으로 만들어져있는 database 이름 출력
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
2 rows in set (0.00 sec)

mysql> select user(); --> 로긴한 사용자 정보 출력
+----------------+
| user() |
+----------------+
| ODBC@localhost |
+----------------+
1 row in set (0.08 sec)

mysql>


위와같이 나오면 정상적인 설치임.
끝내려면 exit이라하면 됨.

mysql> exit;

---------------------------------------
5. Winnt/Win2000에서 서비스로 동작 시킬 수 있나요?
---------------------------------------

winnt/win2000에서는 mysql을 서비스로 등록가능.
방법 1 (command line ): mysql설치 디렉토리 아래bin에 가면 mysqld.exe있음.

prompt> mysqld -install ( service로 등록 )
prompt> net start mysql ( mysql 서비스 시작 )


prompt> net stop mysql ( mysql 서비스 중지 )
prompt> mysqld -remove ( service에서 등록 해제 )

방법 2 (GUI) : c:\mysql\bin\win,ysqladmin.exe를 실행시킴.
그러면 userid와 암호를 묻는 화면이 뜰때 userid는 root, 암호는 sunedu21을 입력.
입력한 root는 기본적으로 제공되는 관리자용 id이고 암호는 없음. sunedu21을 입력하면
그걸로 자동 설정됨.

---------------------------------------
6. mysql.exe의 간단한 사용법을...
---------------------------------------

mysql.exe를 이용해서 다른 시스템의 database로 접속가능하고 다른 사용자로도 접속이 가능합니다.

mysql.exe옵션들

prompt> mysql [-h hostname] [-u userID] [-p암호] [database]

예:
prompt> mysql -h 203.239.XXX.XXX -u root -p sl300

-h 203.239.XXX.XXX : 203.239.XXX.XXX으로 접속, 생략하면 기본값 127.0.0.1 이 사용됨.
-u root : root사용자로 접속 -u옵션을 안주면 anonymous로 접속
-p : 암호를 입력한후 접속. 암호를 묻는 프롬프트가 뜸.
암호가 있는 사용자로 접속시에는 반드시 사용.
만약 암호를 같이 입력하려면 암호를 -p옵션과 붙여 입력.(-ptiger)
database : 사용할 database이름. 만약 생략하면 접속후 use명령으로
database를 지정해야됨. 기본제공 database name은 mysql,test 2개.ㄴ

---------------------------------------
7. MySql관련 GUI tool은 없나요?
---------------------------------------
MySql용 GUI tool은 대부분이 UNIX/LINUX용입니다.
다행히 3.23.21버전부터는 winmysqladmin.exe 라는 GUI tool이 포함되어 있읍니다.
( C:\mysql\bin\winmysqladmin.exe )
이 툴은 MySql서버를 start,stop시킬 수 있고, NT/2000에서는 service에 등록,해제도 가능합니다.
그리고 현재 접속하고있는 process의 갯수와 MySql관련 환경변수 정보와 설정정보까지 파악이 가능합니다.

이 툴은 win95/98/nt/2000에서 모두 동작합니다.
이명령어를 처음 실행하면 접속시 사용할 사용자id와 암호를 넣으라하는데 주로 root를 입력하고
암호는 아무거나 입력하면됩니다.
단 이때 입력한 암호는 자동으로 root의 암호로 인식이 됩니다. 반드시 기억해야겠죠?

그러면 시스템트레이에 신호등 아이콘이 생깁니다. 이걸 누르면 showme 와 winnt,win9X메뉴가 보이죠.
winnt,win9X 메뉴를 선택하면 server start,stop tool의 shutdown이 보입니다.

현재 mysql server가 실행중이면 파란색불이 실행하지 않으면 빨간색 불이 들어옵니다.

만약 빨간색불(mysql서버가 중지중)일때 실행 시키려면 트레이에 있는 신호등 아이콘을 누르고
WinNT나Win9X를 선택, start the service 를 선택하면 신호등에 파라생 불이 들어옴.
즉 mysql서버가 시작했다는 말.

그외 관리용 명령어인 mysqladmin이 있음.
수동으로 실행시에는 mysqld.exe를 실행하면 되지만 수동으로 stop시키려면 mysqladmin을 실행.
물론 옵션과함께...
아래는 mysqladmin용 명령어임. 기능은 설명을 참조.

create databasename Create a new database
drop databasename Delete a database and all its tables
extended-status Gives an extended status message from the server
flush-hosts Flush all cached hosts
flush-logs Flush all logs
flush-status Clear status variables
flush-tables Flush all tables
flush-threads Flush the thread cache
flush-privileges Reload grant tables (same as reload)
kill id,id,... Kill mysql threads
password new-password Change old password to new-password
ping Check if mysqld is alive
processlist Show list of active threads in server
reload Reload grant tables
refresh Flush all tables and close and open logfiles
shutdown Take server down
status Gives a short status message from the server
variables Prints variables available
version Get version info from server

위 명령어중 특히 신경쓸것은 password관련.

설치후 반드시 root(MySQL DB)의 암호를설정할것.
안하면 불행한일(DB삭제)이 발생할 지도...

# mysqladmin -u root password 새암호


필요한 TABLE을 만드는 순서:
1. Database만들기
2. MySQL용 사용자 만들기
3. Table만들기

- javabrain용 DB 만들기(2가지 방법)
1.UNIX shell상에서 만들기
# mysqladmin -u root -p create javabrain

2.DB에 login후 만들기
mySQL에서제공하는 명령어중 mysqladmin은 관리용
mysql은 client용 명령어.

# mysql -u root -p mysql
mysql> create database javabrain;

** mysql 명령어 요약
mysql [-h DB서버IP] [-u DB용사용자ID] [-p[암호]] [Database] [< sql-script파일 ]
-p 만 부여하면 암호는 물어봄. 암호까지 주려면 -p암호(-p와 암호를 붙여씀)


- 새사용자등록
먼저 MySQL에 root로 login
# mysql -u root -p mysql

mysql> grant SELECT,insert,update,delete,create,drop
> on javabrain.*
> to scott@'localhost'
> identified by 'tiger';
mysql> grant SELECT,insert,update,delete,create,drop
> on javabrain.*
> to scott@'%'
> identified by 'tiger';
mysql> flush privileges;

또는

mysql> grant all privileges
> on javabrain.* to scott@'%'
> identified by 'tiger';

mysql> grant all privileges
> on javabrain.* to scott@localhost
> identified by 'tiger';
mysql> flush privileges;

scott 사용자를 등록할때 여러가지(3가지) 방법이 있는데 그중 하나를 씀
등록시 반드시 to scott@'localhost'와 to scott@'%'를 둘다 해줘야함
localhost와 %는 접속을 허용하는 hostname인데 localhost를 빼면 다른 시스템에서
network으로만 접근할 수 밖에 없음.
그리고 %란 모든호스트를 의미하기때문에 %를 지정해야지만 다른 시스템에서
network으로 MySQL로 접근가능( mysql -h hostIP또는hostname -u 사용자ID -p )

user생성후 반드시 DB를 reload 해야만 만든 사용자가 접속가능(아래명령어)

# mysqladmin -u root -p reload
또는
mysql> flush privileges;


접속해서 확인하기
# mysql -u scott -p javabrain --> ㅤDB서버에서login

다른시스템에서
# mysql -h DB서버의IP주소 -u scott -p javabrain


필요한 테이블 만들기(customer,shares,stock)
-주의사항: mysql은 table name에서의 대소문자를 구분함
(이것은 MySQL이 설치된 OS를 따름. 즉 M$계열에서는 구분안함)

필요한 sql문을 파일(maketable.sql-확장자는 무관)로 만든후 shell상에서 아래
명령어 실행

# mysql -u scott -p javabrain < maketable.sql

확인
# mysql -u scott -p javabrain
mysql> show tables;
mysql> select * from customer;
mysql> select * from shares;
mysql> select * from stock;

- JDBC Driver 사용하기
MySQL용 JDBC Driver는 2가지가 있지만 여기서는 mm driver를 사용.

http://www.worldserver.com/mm.mysql/ 에 가서 최신 버전을 download할것
(mm.mysql-2.0.4-bin.jar)

가져온것을 적당한 곳에서 해제.

사용법:

Class.forName("org.gjt.mm.mysql.Driver");
String url="jdbc:mysql://127.0.0.1:3306/javabrain";
Connection conn = DriverManager.getConnection(url,"scott","tiger");



관련 명령어들.

# mysql -u root -p mysql
password:
mysql> select user(); --> 현재 어떤 user권한으로 접속하고 있는지.
mysql> show database; -->데이터베이스 종류보기
mysql> show tables from mysql; --> mysql상의 테이블 정보보기
mysql> show columns from customer; --> customer 테이블 구조보기
mysql> show index from customer; --> customer테이블의 인덱스보기
mysql> use mysql; --> 사용할 database를 변경
(기본적으로 MySQL에는 두개의 database-mysql,test-가 있음.
mysql은 DBMS관리용 정보, test는 연습용
그래서 mysql이란 database는 사용시 주의할것)


#########################################
#########################################
##
## 추 가 사 항
##
#########################################
#########################################

javabrain.sql 이라는 파일을 수행 시키면 SL-300을위한 DB를 위한 모든 내용이 자동 설정됨.

사용예)

mysql 서버를 가동시킨후 ( mysqld.exe )
prompt> mysql -u root -p < javabrain.sql

이러면 아래 사항이 자동 생성됨
database이름 : javabrain
root암호 : javabrain
사용자 id : scott
암호 : tiger
생성된table들 : customer, shares, stock

가끔씩 user부분이 적용이 안되는 경우에는 DB를 restart시키면 된다.

prompt> mysqladmin -u root -p shutdown --> DB shutdown
prompt> mysqld

만약 암호를 바꾸고 싶으면 sql script내부에 .... identified by 다음부분이 암호이니
알아서 바꾸면 됨. 단 반드시 암호는 single quotation으로 묶어줄것.

예) 암호를 apple 로 하자면 .... identified by 'apple'

. 이제 프로그램을 이용하여 데이터 베이스에 접속시켜보도록 하자.

먼저 프로그램을 수행시키기 전에 classpath에 MySQL Driver가 있어야 되는 건 당연한 말이다.

JDK_HOME/JRE/LIB/EXT/ 에 해당 드라이버 mysql.jar를 복사하거나
환경변수에 mysql.jar파일을 classpath에 추가시킨후 테스트하도록 한다.

import java.sql.*;

public class MySQLJdbcTest {
public static void main(String[] args) throws Exception{
try{
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
System.out.println("DriverLoading succeed..");

String url="jdbc:mysql://127.0.0.1:3306/javabrain";
// 만약 위의 url로 접속시 한글에 문제가 발생하면 아래 url을 써서 사용하도록 한다.

// String url="jdbc:mysql://127.0.0.1:3306/javabrain?useUnicode=true&characterEncoding=euc-kr";
Connection conn = DriverManager.getConnection(url,"scott","tiger");
System.out.println("Connection succeed");
Statement stmt = conn.createStatement();
System.out.println("정보추출");

ResultSet rs = stmt.executeQuery("show databases");
while( rs.next() ) {
System.out.println(rs.getString(1));
}
System.out.println("MySQL 환경 점검 종료");
rs.close();
stmt.close();
conn.close();
}catch(Exception e){
System.out.println(e);
}
}
}



 

http://www.java2java.com 에서 가져왔습니다.

반응형

'DB > JDBC' 카테고리의 다른 글

각종 DBMS JDBC 드라이버 셋팅법 정리..  (0) 2007.06.16
MetaData  (0) 2007.04.04
PreparedStatement  (0) 2007.04.04
Posted by Real_G