안녕하세요. 썬구루입니다. 이 게시물에서는 CentOS 7.3 리눅스 기반 MariaDB 데이터베이스 서버 설치 및 Tomcat과 연동하는 방법에 대해 알아보도록 하겠습니다. CentOS 7.3에서 yum 명령으로 MariaDB을 설치 시도하면 MariaDB가 설치됩니다. ^^
텍스트 파일에는 비정형화된 데이터가 저장됩니다. 일정한 형식의 정형화된 데이터를 저장하기 위해 데이터베이스 시스템(RDBMS)를 사용하는데 여러 종류의 데이터베이스 시스템 중 MySQL이라는 데이터베이스가 있었습니다. 썬마이크로시스템즈(Sun Microsystems)가 인수를 하였고 다시 오라클(Oracle)이 썬마이크로시스템즈를 인수함으로써 지금은 Oracle MySQL로 되어 있습니다. 이것에 대한 클론이 MariaDB입니다.
이 게시물에서 데이터베이스와 데이터베이스 시스템이 무엇인지에 대해 설명하지 않습니다. MariaDB 데이터베이스 서버를 CentOS 7.3 리눅스에 설치하고 이전에 설치한 Apache Tomcat과 연동하는 방법에 대해 설명합니다. 그리고 테스트 용 JSP 파일을 사용하여 Apache Tomcat 과 MariaDB 연동을 확인합니다.
서버 IP 주소
|
관련 서비스
|
서비스 포트(Port) 주소
|
192.168.80.10
|
Apache HTTPD
|
80
|
192.168.80.11
|
Apache Tomcat
|
8080, 8009
|
192.168.80.12
|
MariaDB Database
|
3306
|
■ MariaDB
1). CentOS 7.3에 MariaDB 설치
DB01 가상머신에 CentOS 7.3 DVD ISO 파일을 연결한 후 아래와 같이 yum 명령으로 MariaDB를 설치한다.
[root@db01 ~]# cd /etc/yum.repos.d/
[root@db01 yum.repos.d]# [root@db01 yum.repos.d]# vi CentOS-Media.repo # CentOS-Media.repo # # This repo can be used with mounted DVD media, verify the mount point for # CentOS-7. You can use this repo and yum to install items directly off the # DVD ISO that we release. # # To use this repo, put in your DVD and use it with the other repos too: # yum --enablerepo=c7-media [command] # # or for ONLY the media repo, do this: # # yum --disablerepo=\* --enablerepo=c7-media [command] [c7-media] name=CentOS-$releasever - Media baseurl=file:///media/CentOS/ file:///media/cdrom/ file:///run/media/root/CentOS\ 7\ x86_64/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 [root@db01 yum.repos.d]# [root@db01 yum.repos.d]# yum --disablerepo=\* --enablerepo=c7-media -y install mariadb mariadb-server Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * c7-media: Resolving Dependencies --> Running transaction check ---> Package mariadb.x86_64 1:5.5.52-1.el7 will be installed ---> Package mariadb-server.x86_64 1:5.5.52-1.el7 will be installed --> Processing Dependency: perl-DBD-MySQL for package: 1:mariadb-server-5.5.52-1.el7.x86_64 --> Running transaction check ---> Package perl-DBD-MySQL.x86_64 0:4.023-5.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================== Package Arch Version Repository Size ======================================================================================================== Installing: mariadb x86_64 1:5.5.52-1.el7 c7-media 8.7 M mariadb-server x86_64 1:5.5.52-1.el7 c7-media 11 M Installing for dependencies: perl-DBD-MySQL x86_64 4.023-5.el7 c7-media 140 k Transaction Summary ======================================================================================================== Install 2 Packages (+1 Dependent package) Total download size: 20 M Installed size: 104 M Downloading packages: -------------------------------------------------------------------------------------------------------- Total 65 MB/s | 20 MB 00:00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : 1:mariadb-5.5.52-1.el7.x86_64 1/3 Installing : perl-DBD-MySQL-4.023-5.el7.x86_64 2/3 Installing : 1:mariadb-server-5.5.52-1.el7.x86_64 3/3 Verifying : 1:mariadb-server-5.5.52-1.el7.x86_64 1/3 Verifying : perl-DBD-MySQL-4.023-5.el7.x86_64 2/3 Verifying : 1:mariadb-5.5.52-1.el7.x86_64 3/3 Installed: mariadb.x86_64 1:5.5.52-1.el7 mariadb-server.x86_64 1:5.5.52-1.el7 Dependency Installed: perl-DBD-MySQL.x86_64 0:4.023-5.el7 Complete! [root@db01 yum.repos.d]# [root@db01 yum.repos.d]# rpm -qa | grep -i mariadb mariadb-server-5.5.52-1.el7.x86_64 mariadb-libs-5.5.52-1.el7.x86_64 mariadb-5.5.52-1.el7.x86_64 [root@db01 yum.repos.d]# rpm -qa | grep -i mysql perl-DBD-MySQL-4.023-5.el7.x86_64 [root@db01 yum.repos.d]# [root@db01 yum.repos.d]# id -a mysql uid=27(mysql) gid=27(mysql) groups=27(mysql) [root@db01 yum.repos.d]# |
2). MariaDB 서비스 시작 종료
systemctl [ start | stop ] mariadb
|
3). 시스템 부팅 시 MariaDB 서비스 자동 시작
systemctl [ enable | disable ] mariaDB
|
4). MariaDB 시작 및 테이블 생성
아래와 같은 명령을 실행하여 MariaDB 서비스를 실행합니다.
[root@db01 yum.repos.d]# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service. [root@db01 yum.repos.d]# systemctl start mariadb [root@db01 yum.repos.d]# [root@db01 yum.repos.d]# systemctl status mariadb ● mariadb.service - MariaDB database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2017-02-04 16:47:36 EST; 12s ago Process: 37868 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS) Process: 37839 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS) Main PID: 37867 (mysqld_safe) CGroup: /system.slice/mariadb.service ├─37867 /bin/sh /usr/bin/mysqld_safe --basedir=/usr └─38024 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib6... Hint: Some lines were ellipsized, use -l to show in full. [root@db01 yum.repos.d]# [root@db01 yum.repos.d]# firewall-cmd --permanent --zone=public --add-port=3306/tcp success [root@db01 yum.repos.d]# firewall-cmd --reload success [root@db01 yum.repos.d]# |
아래와 같은 명령을 실행하여 MariaDB의 root 계정 암호를 설정합니다.
[root@db01 yum.repos.d]# mysqladmin -u root password '1234'
|
아래와 같은 명령을 실행하여 MariaDB에 접속합니다.
[root@db01 yum.repos.d]# mysql -u root -p
Enter password: 암호입력(1234) Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 3 Server version: 5.5.52-MariaDB MariaDB Server Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> |
아래와 같이 MariaDB에 일반계정을 생성합니다. 계정 이름은 testuser이고 암호는 1234입니다.
MariaDB [(none)]> grant select, insert, update, delete, create on test.* to 'testuser'@'localhost' identified by '1234';
Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> grant select, insert, update, delete, create on test.* to 'testuser'@'%' identified by '1234'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> quit Bye [root@db01 yum.repos.d]# |
생성한 testuser 계정으로 다시 MariaDB에 접속합니다. 그리고 테스트 용 test 테이블을 생성합니다.
[root@db01 yum.repos.d]# mysql -u testuser -p
Enter password: 암호입력(1234) Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 4 Server version: 5.5.52-MariaDB MariaDB Server Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> connect test; Connection id: 5 Current database: test MariaDB [test]> create table test(name varchar(30)); Query OK, 0 rows affected (0.01 sec) MariaDB [test]> select * from test; Empty set (0.00 sec) MariaDB [test]> insert into test values('MariaDB Database'); Query OK, 1 row affected (0.00 sec) MariaDB [test]> select * from test; +------------------+ | name | +------------------+ | MariaDB Database | +------------------+ 1 row in set (0.00 sec) MariaDB [test]> insert into test values('sunguru'); Query OK, 1 row affected (0.00 sec) MariaDB [test]> select * from test; +------------------+ | name | +------------------+ | MariaDB Database | | sunguru | +------------------+ 2 rows in set (0.00 sec) MariaDB [test]> commit; Query OK, 0 rows affected (0.00 sec) MariaDB [test]> quit Bye [root@db01 yum.repos.d]# |
■ MariaDB 과 Apache Tomcat 연동
WAS01 가상머신에 CentOS 7.3 DVD ISO 파일을 연결한 후 mysql-connector-java 패키지를 설치합니다. 그리고 관련된 파일을 Tomcat 라이브러리 디렉터리에 복사하고 Tomcat을 재실행하면 연동이 끝납니다.
[root@was01 ~]# cd /run/media/root/CentOS\ 7\ x86_64/Packages/
[root@was01 Packages]# ls | grep connector-javamysql-connector-java-5.1.25-3.el7.noarch.rpm [root@was01 Packages]# [root@was01 Packages]# yum --disablerepo=\* --enablerepo=c7-media -y install mysql-connector-java Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * c7-media: Resolving Dependencies --> Running transaction check ---> Package mysql-connector-java.noarch 1:5.1.25-3.el7 will be installed --> Processing Dependency: slf4j for package: 1:mysql-connector-java-5.1.25-3.el7.noarch --> Running transaction check ---> Package slf4j.noarch 0:1.7.4-3.el7 will be installed --> Processing Dependency: mvn(javassist:javassist) for package: slf4j-1.7.4-3.el7.noarch --> Processing Dependency: mvn(commons-lang:commons-lang) for package: slf4j-1.7.4-3.el7.noarch --> Processing Dependency: mvn(ch.qos.cal10n:cal10n-api) for package: slf4j-1.7.4-3.el7.noarch --> Running transaction check ---> Package apache-commons-lang.noarch 0:2.6-15.el7 will be installed ---> Package cal10n.noarch 0:0.7.7-4.el7 will be installed ---> Package javassist.noarch 0:3.16.1-10.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: mysql-connector-java noarch 1:5.1.25-3.el7 c7-media 1.3 M Installing for dependencies: apache-commons-lang noarch 2.6-15.el7 c7-media 276 k cal10n noarch 0.7.7-4.el7 c7-media 36 k javassist noarch 3.16.1-10.el7 c7-media 627 k slf4j noarch 1.7.4-3.el7 c7-media 170 k Transaction Summary ================================================================================ Install 1 Package (+4 Dependent packages) Total download size: 2.3 M Installed size: 3.4 M Downloading packages: -------------------------------------------------------------------------------- Total 89 MB/s | 2.3 MB 00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : javassist-3.16.1-10.el7.noarch 1/5 Installing : apache-commons-lang-2.6-15.el7.noarch 2/5 Installing : cal10n-0.7.7-4.el7.noarch 3/5 Installing : slf4j-1.7.4-3.el7.noarch 4/5 Installing : 1:mysql-connector-java-5.1.25-3.el7.noarch 5/5 Verifying : slf4j-1.7.4-3.el7.noarch 1/5 Verifying : cal10n-0.7.7-4.el7.noarch 2/5 Verifying : 1:mysql-connector-java-5.1.25-3.el7.noarch 3/5 Verifying : apache-commons-lang-2.6-15.el7.noarch 4/5 Verifying : javassist-3.16.1-10.el7.noarch 5/5 Installed: mysql-connector-java.noarch 1:5.1.25-3.el7 Dependency Installed: apache-commons-lang.noarch 0:2.6-15.el7 cal10n.noarch 0:0.7.7-4.el7 javassist.noarch 0:3.16.1-10.el7 slf4j.noarch 0:1.7.4-3.el7 Complete! [root@was01 Packages]# |
설치된 mysql-connector-java 패키지에 관련된 /usr/share/java/mysql-connector-java.jar 파일을 아래와 같이 Apache Tomcat의 라이브러리 디렉터리에 복사한 후 Tomcat 서비스를 재실행합니다.
[root@was01 Packages]# cp /usr/share/java/mysql-connector-java.jar /usr/share/tomcat/lib/
[root@was01 Packages]# systemctl restart tomcat [root@was01 Packages]# |
■ JSP 파일를 가지고 MariaDB 연결 테스트
WAS01 가상머신에서 아래와 같은 명령을 실행하여 [ mariadb_test.jsp ] 파일을 생성합니다. 아래 JSP 파일 내용은 이 게시물에 첨부된 파일을 참고하세요.
[root@was01 Packages]# cd /usr/share/tomcat/webapps/ROOT/
[root@was01 ROOT]# [root@was01 ROOT]# vi mariadb_test.jsp <html> <head> <title> MariaDB 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 { // MariaDB 접속을 위한 정보입력 시작 String MARIADB_SERVER = "192.168.80.12:3306"; String MARIADB_SERVER_USERNAME = "testuser"; String MARIADB_SERVER_PASSWORD = "1234"; String MARIADB_DATABASE = "test"; String URL = "jdbc:mysql://" + MARIADB_SERVER + "/" + MARIADB_DATABASE; Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection(URL, MARIADB_SERVER_USERNAME, MARIADB_SERVER_PASSWORD); // MariaDB 접속을 위한 정보입력 종료 %> <% // MariaDB 질의문처리 시작 String query = "select * from test"; PS = con.prepareStatement(query); RS = PS.executeQuery(); // MariaDB 질의문처리 시작 // 질의문 결과표출 시작 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과 MariaDB 데이터베이스 연동 확인
호스트 운영체제(여러분들의 윈도우 운영체제)에 있는 웹브라우저를 사용하여 웹서버로 접속 테스트를 합니다.
HTTPD 웹서버로 mariadb_test.jsp 파일 서비스 요청을 하면 이를 Tomcat 웹 응용(WAS) 서버로 재요청하고 JSP 파일에 있는 DB 쿼리를 처리하기 위해 mysql-connector를 사용하여 MariaDB 데이터베이스에 접속, 데이터베이스 내에 있는 테이블을 확인하여 정보를 참조하여 역순으로 처리하여 클라이언트(웹브라우저)로 응답합니다.
성공적으로 잘 되었네요. 여기까지 MariaDB 설치 및 연동에 대해 알아보았습니다.
No comments:
Post a Comment