안녕하세요. 썬구루입니다. 이 게시물에서는 CentOS 리눅스 기반 MySQL 데이터베이스 서버 설치 및 Tomcat과 연동하는 방법에 대해 알아보도록 하겠습니다.
텍스트 파일에는 비정형화된 데이터가 저장됩니다. 일정한 형식의 정형화된 데이터를 저장하기 위해 데이터베이스 시스템(RDBMS)를 사용하는데 여러 종류의 데이터베이스 시스템 중 MySQL이라는 데이터베이스가 있습니다. 썬마이크로시스템즈(Sun Microsystems)가 인수를 하였고 다시 오라클(Oracle)이 썬마이크로시스템즈를 인수함으로써 지금은 Oracle MySQL로 되어 있습니다. 그리고 MySQL은 상용 버전과 커뮤니티 버전이 있습니다.
이 게시물에서 데이터베이스와 데이터베이스 시스템이 무엇인지에 대해 설명하지 않습니다. MySQL 데이터베이스 서버를 CentOS에 설치하고 이전에 설치한 Apache Tomcat과 연동하는 방법에 대해 설명합니다. 그리고 테스트 용 JSP 파일을 사용하여 Apache Tomcat 과 MySQL 연동을 확인합니다.
서버 IP 주소
|
관려 서비스
|
서비스 포트(Port) 주소
|
192.168.80.21
|
Apache HTTPD
|
80
|
192.168.80.22
|
Apache Tomcat
|
8080
|
192.168.80.31
|
MySQL Database
|
3306
|
mysql-5.1.73-3.el6_5.x86_64.rpm
perl-DBD-MySQL-4.013-3.el6.x86_64.rpm mysql-server-5.1.73-3.el6_5.x86_64.rpm |
[root@db01 ~]# rpm -qa | grep -i mysql
mysql-libs-5.1.73-3.el6_5.x86_64 [root@db01 ~]# [root@db01 ~]# cd /media/CentOS_6.6_Final/Packages [root@db01 Packages]# [root@db01 Packages]# rpm -ivh mysql-5.1.73-3.el6_5.x86_64.rpm warning: mysql-5.1.73-3.el6_5.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY Preparing... ########################################### [100%] 1:mysql ########################################### [100%] [root@db01 Packages]# [root@db01 Packages]# rpm -ivh perl-DBD-MySQL-4.013-3.el6.x86_64.rpm warning: perl-DBD-MySQL-4.013-3.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY Preparing... (########################################### [100%] 1:perl-DBD-MySQL (########################################### [100%] [root@db01 Packages]# [root@db01 Packages]# rpm -ivh mysql-server-5.1.73-3.el6_5.x86_64.rpm warning: mysql-server-5.1.73-3.el6_5.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY Preparing... (########################################### [100%] 1:mysql-server (########################################### [100%] [root@db01 Packages]# [root@db01 Packages]# id -a mysql uid=27(mysql) gid=27(mysql) groups=27(mysql) [root@db01 Packages]# |
원활한 서비스 테스트를 위해 아래와 같이 iptables 방화벽을 내리고 SELinux를 permissive로 설정합니다.
[root@db01 Packages]# service iptables stop
iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Flushing firewall rules: [ OK ] iptables: Unloading modules: [ OK ] [root@db01 Packages]# [root@db01 Packages]# chkconfig iptables off [root@db01 Packages]# [root@db01 Packages]# setenforce permissive [root@db01 Packages]# [root@db01 Packages]# vi /etc/sysconfig/selinux SELINUX=permissive [root@db01 Packages]# |
2). MySQL 서비스 시작 종료
service mysqld [ start | stop ]
|
3). 시스템 부팅 시 MySQL 서비스 자동 시작
chkconfig mysqld [ on | off ]
|
4). MySQL 시작 및 테이블 생성
아래와 같은 명령을 실행하여 MySQL 서비스를 실행합니다.
[root@db01 ~]# service mysqld start
Initializing MySQL database: WARNING: The host 'db01' could not be looked up with resolveip. This probably means that your libc libraries are not 100 % compatible with this binary MySQL version. The MySQL daemon, mysqld, should work normally with the exception that host name resolving will not work. This means that you should use IP addresses instead of hostnames when specifying MySQL privileges ! Installing MySQL system tables... OK Filling help tables... OK To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the following commands: /usr/bin/mysqladmin -u root password 'new-password' /usr/bin/mysqladmin -u root -h db01 password 'new-password' Alternatively you can run: /usr/bin/mysql_secure_installation which will also give you the option of removing the test databases and anonymous user created by default. This is strongly recommended for production servers. See the manual for more instructions. You can start the MySQL daemon with: cd /usr ; /usr/bin/mysqld_safe & You can test the MySQL daemon with mysql-test-run.pl cd /usr/mysql-test ; perl mysql-test-run.pl Please report any problems with the /usr/bin/mysqlbug script! [ OK ] Starting mysqld: [ OK ] [root@db01 ~]# [root@db01 ~]# chkconfig mysqld on [root@db01 ~]# |
아래와 같은 명령을 실행하여 MySQL의 root 계정 암호를 설정합니다.
[root@db01 ~]# /usr/bin/mysqladmin -u root password '1234'
|
아래와 같은 명령을 실행하여 MySQL에 접속합니다.
[root@db01 ~]# mysql -u root -p
Enter password: 암호입력(1234) Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.1.73 Source distribution Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> |
아래와 같이 MySQL에 일반 계정을 생성합니다. 계정 이름은 testuser이고 암호는 1234입니다.
mysql> grant select, insert, update, delete, create on test.* to 'testuser'@'localhost' identified by '1234';
mysql> grant select, insert, update, delete, create on test.* to 'testuser'@'%' identified by '1234'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> quit Bye [root@db01 ~]# |
생성한 testuser 계정으로 다시 MySQL에 접속합니다. 그리고 테스트 용 test 테이블을 생성합니다.
[root@db01 ~]# mysql -u testuser -p
Enter password: 암호입력(1234) Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 7 Server version: 5.1.73 Source distribution Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> connect test; Connection id: 8 Current database: test mysql> create table test (name varchar(30)); Query OK, 0 rows affected (0.01 sec) mysql> select * from test; Empty set (0.00 sec) mysql> insert into test values ('MySQL Database'); Query OK, 1 row affected (0.00 sec) mysql> select * from test; +----------------+ | name | +----------------+ | MySQL Database | +----------------+ 1 row in set (0.00 sec) mysql> insert into test values ('sunguru'); Query OK, 1 row affected (0.00 sec) mysql> select * from test; +----------------+ | name | +----------------+ | MySQL Database | | sunguru | +----------------+ 2 rows in set (0.00 sec) mysql> commit; Query OK, 0 rows affected (0.00 sec) mysql> |
■ MySQL 과 Apache Tomcat 연동
WAS01 가상머신에 CentOS 6.6 DVD 1번 ISO 파일을 연결한 후 mysql-connector-java-5.1.17-6.el6.noarch.rpm 패키지를 설치합니다. 그리고 관련된 파일을 Tomcat 라이브러리 디렉터리에 복사하고 Tomcat을 재실행하면 연동이 끝납니다.
[root@was01 ~]# cd /media/CentOS_6.6_Final/Packages/
[root@was01 Packages]# [root@was01 Packages]# rpm -ivh slf4j-1.5.8-8.el6.noarch.rpm warning: slf4j-1.5.8-8.el6.noarch.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY Preparing... ########################################### [100%] 1:slf4j ########################################### [100%] [root@was01 Packages]# [root@was01 Packages]# rpm -ivh geronimo-specs-1.0-3.5.M2.el6.noarch.rpm warning: geronimo-specs-1.0-3.5.M2.el6.noarch.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY Preparing... ########################################### [100%] 1:geronimo-specs ########################################### [100%] [root@was01 /]# [root@was01 Packages]# rpm -ivh geronimo-specs-compat-1.0-3.5.M2.el6.noarch.rpm warning: geronimo-specs-compat-1.0-3.5.M2.el6.noarch.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY Preparing... ########################################### [100%] 1:geronimo-specs-compat ########################################### [100%] [root@was01 Packages]# [root@was01 Packages]# rpm -ivh mysql-connector-java-5.1.17-6.el6.noarch.rpm warning: mysql-connector-java-5.1.17-6.el6.noarch.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY Preparing... ########################################### [100%] 1:mysql-connector-java ########################################### [100%] [root@was01 Packages]# [root@was01 Packages]# rpm -ql mysql-connector-java-5.1.17-6.el6.noarch | grep connector /etc/maven/fragments/mysql-connector-java /usr/share/doc/mysql-connector-java-5.1.17 /usr/share/doc/mysql-connector-java-5.1.17/CHANGES /usr/share/doc/mysql-connector-java-5.1.17/COPYING /usr/share/doc/mysql-connector-java-5.1.17/docs /usr/share/doc/mysql-connector-java-5.1.17/docs/README.txt /usr/share/doc/mysql-connector-java-5.1.17/docs/connector-j.html /usr/share/doc/mysql-connector-java-5.1.17/docs/connector-j.pdf /usr/share/java/mysql-connector-java-5.1.17.jar /usr/share/java/mysql-connector-java.jar /usr/share/maven2/poms/JPP-mysql-connector-java.pom [root@was01 Packages]# [root@was01 Packages]# service tomcat6 restart Stopping tomcat6: [ OK ] Starting tomcat6: [ OK ] [root@was01 Packages]# |
설치된 mysql-connector-java-5.1.17-6.el6.noarch.rpm 패키지에 관련된 /usr/share/java/mysql-connector-java-5.1.17.jar 파일을 아래와 같이 Apache Tomcat의 라이브러리 디렉터리에 복사한 후 Tomcat 서비스를 재실행합니다.
[root@was01 java]# cp /usr/share/java/mysql-connector-java-5.1.17.jar /usr/share/tomcat6/lib/
[root@was01 java]# [root@was01 java]# service tomcat6 restart Stopping tomcat6: [ OK ] Starting tomcat6: [ OK ] [root@was01 java]# |
■ JSP 파일를 가지고 MySQL 연결 테스트
WAS01 가상머신에서 아래와 같은 명령을 실행하여 mysql_test.jsp [ 다운로드 ] 파일을 생성합니다. 아래 JSP 파일 내용은 이 게시물에 첨부된 파일을 참고하세요.
[root@was01 ~]# cd /usr/share/tomcat6/webapps/ROOT
[root@was01 ROOT]# [root@was01 ROOT]# vi mysql_test.jsp <html> <head> <title> MySQL Connection Test</title> </head> <body> <%@ page contentType="text/html" language="java" %> <%@ page import="java.sql.*" %> <% Connection con = null; PreparedStatement PS = null; ResultSet RS = null; try { // MySQL DB 접속을 위한 정보입력 시작 String MYSQL_SERVER = "192.168.80.31:3306"; String MYSQL_SERVER_USERNAME = "testuser"; String MYSQL_SERVER_PASSWORD = "1234"; String MYSQL_DATABASE = "test"; String URL = "jdbc:mysql://" + MYSQL_SERVER + "/" + MYSQL_DATABASE; Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection(URL, MYSQL_SERVER_USERNAME, MYSQL_SERVER_PASSWORD); // MySQL DB 접속을 위한 정보입력 종료 %> <% // MySQL 질의문처리 시작 String query = "select * from test"; PS = con.prepareStatement(query); RS = PS.executeQuery(); // MySQL 질의문처리 시작 // 질의문 결과표출 시작 int count=0; while(RS.next()) { String name = RS.getString("name"); %> <p>Name : <%=name%></p> <% count++; } // 질의문 결과표출 시작 // 예외처리 시작 } catch(Exception ErrMsg) { ErrMsg.printStackTrace(); out.println("Unfortunately, Database connection failed"); } // 예외처리 시작 %> </body> </html> [root@was01 ROOT]# |
■ 웹브라우져를 사용하여 Apache Tomcat과 MySQL 데이터베이스 연동 확인
호스트 운영체제(여러분들의 윈도우 운영체제)에 있는 웹브라우저를 사용하여 웹서버로 접속 테스트를 합니다.
HTTPD 웹서버로 mysql_test.jsp 파일 서비스 요청을 하면 이를 Tomcat 웹 응용(WAS) 서버로 재요청하고 JSP 파일에 있는 DB 쿼리를 처리하기 위해 mysql-connector를 사용하여 MySQL 데이터베이스에 접속, 데이터베이스 내에 있는 테이블을 확인하여 정보를 참조하여 역순으로 처리하여 클라이언트(웹브라우저)로 응답합니다.
성공적으로 잘 되었네요. 여기까지 MySQL 설치 및 연동에 대해 알아보았습니다. 다음 게시물에서는 Oracle 11g Express 설치 및 연동에 대해 알아보도록 하겠습니다.
No comments:
Post a Comment