순서
1. Tomcat, jdbc 설치
2. mysql 설치
3. 같은 티어내에서 연동
4. 티어를 나누어 연동
5. ssh로 터널링해 연동
1. Tomcat, jdbc 설치
#톰캣 설치
yum install -y tomcat
#톰캣 실행
systemctl start tomcat
#중지
systemctl stop tomcat
#재시작
systemctl restart tomcat
#openjdk설치 #tomcat만 실행은 가능하나 java로된 코드를 짜기 위해 jdk 필요
yum install -y java-1.8.0-openjdk
yum install -y java-1.8.0-openjdk-devel
#설치 경로 확인 #저는 이렇게 나왔어요~ /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64/jre/bin/java
readlink -f /usr/bin/java
#파일을 열어 아래 내용 추가
vi /etc/profile
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
export JAVA_HOME PATH CLASSPATH
#변경 적용
source /etc/profile
#설정 확인
echo $JAVA_HOME
echo $PATH
echo $CLASSPATH
#jdbc 설치 # .java나 .jsp에서 db를 부르고 싶다면 jdbc가 있어야 함.
#다운로드
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-j-8.0.32.tar.gz
#압축해제
tar xvfz mysql-connector-j-8.0.32.tar.gz
#java 설치한 곳에 옮기기
cp -a mysql-connector-j-8.0.32/mysql-connector-j-8.0.32.jar /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64/jre/lib/ext
2. mysql 설치
#mysql 설치
yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm
yum install -y mysql-server
#설치중 아래와 같은 에러 발생 함
#GPG key retrieval failed: [Errno 14] curl#37 - "Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022”
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
아니면 이분 링크대로 했을 때도 됐습니다.
https://babysunmoon.tistory.com/entry/DBcentos-70이상에서-mysql-80-yum패키지-설치
path : /etc/yum.repos.d/mysql-community.repo
#다시 설치
yum install -y mysql-server
#실행
systemctl start mysqld
#중지
systemctl stop mysqld
#재실행
systemctl restart mysqld
#설치는 했으나 코드 짜 넣고 사용하려면 초기 비밀번호를 바꿔야 함.
#초기 비밀번호 확인, 저의 경우 ed5#G=eO*s+V 가 비밀번호 였습니다.
grep 'temporary password' /var/log/mysqld.log
#mysql 접속
mysql -u root -p
비밀번호 입력 : ed5#G=eO*s+V
#초기 비밀 번호 변경
ALTER USER 'root'@'localhost' IDENTIFIED BY '소문자대문자특수기호쓴비밀번호';
#간단한 db, 테이블 생성(동작 확인용)
#사용법은 이 감사하게도 이 블로그에서 배웠습니다.
https://velog.io/@may_soouu/mysql-%ED%8A%9C%ED%86%A0%EB%A6%AC%EC%96%BC
🎃 mysql 튜토리얼
mysql에 직접 DB와 테이블을 만들어보고, 데이터를 삽입해보자😀지금은 테이블 정보가 없기 때문에, 보여지는 것이 없다.예를 들어 1개의 음료에 서로 겹치지 않게 추천되는 상품들이 여러개 있
velog.io
#생성
CREATE DATABASE centosDB;
#DB선택
USE centosDB;
#테이블 생성
CREATE TABLE drinks
(
id INT NOT NULL AUTO_INCREMENT, # id는 null을 허락하지 않으며, 자동으로 증가하는 pk값
product VARCHAR(100) NOT NULL, #product칼럼은 varchar형식이며 최대 100자이다
PRIMARY KEY(id) # pk값은 id 이다.
);
# drinks 테이블
INSERT INTO drinks (product) VALUES('아메리카노 말고 러시아노');
INSERT INTO drinks (product) VALUES('라떼는 말이야');
INSERT INTO drinks (product) VALUES('포도당 홍차');
INSERT INTO drinks (product) VALUES('1');
INSERT INTO drinks (product) VALUES('2');
INSERT INTO drinks (product) VALUES('3');
3. 같은 티어내에서 연동
//코드는 좋은 예제들을 올려놓은 블로그가 많으니 url 입력 부분만 기재합니다.
//코드는 감사하게도 이 블로그에서 배웠습니다.
Tomcat / MySQL 연동
Tomcat/MySQL 연동 작성일시 : 2018년 03월 02일 환경 : Window 2012 R2 Datacenter – Tomcat 7.0.84 / Ubuntu 14.04 – MySQL 5.7 시나리오 : 물리적으로 구분 된 서로 다른 서버간의 WAS ( Tomcat ) / DB ( MySQL ) 연동 Tomcat 서버
osc131.tistory.com
//이 부분에서 URL이 자기자신을 가리키고 있어야 한다.
String DB_URL = "jdbc:mysql://127.0.0.1:3306/mysql";
String query = "select * from something";
4. 티어를 나누어 연동
#remote server에서 mysql을 접속하려면 권한이 있어야 한다. 없다면 아래같이 에러가 발생한다.
#jsp 파일에서 접속시 발생한 에러
Exception Error...java.sql.SQLException: null, message from server: "Host 'monitoring-server.novalocal' is not allowed to connect to this MySQL server”
#접근하는 DB user에 권한이 있어야 하는데,
#root에서 잠깐 쓸꺼니까 root에 권한을 주면 된다.
#왠진 모르지만 이미 있는 root유저를 또 만들어야됨. 아니면 권한이 안주어짐;;
create user 'root'@'%' IDENTIFIED BY 'DB비밀번호';
#권한 주기, mysql 버전 별로 명령어가 다를 수 있음
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
#연동 코드에서 주소를 remote server로 변경
String DB_URL = "jdbc:mysql://'DBserver_IP':3306/mysql";
5. ssh로 터널링해 연동
tomcat에서 짠 코드를 죽어도 바꾸기 싫을 수가 있나보다. was에서 DB server에 코드변경 없이 자동으로 연결해달라는 요구를 받았다.
DB URL은 그대로 WAS의 3306번을 가리킨채 db server에 접근해야 한다.
String DB_URL = "jdbc:mysql://127.0.0.1:3306/mysql";
한참 조사해본 결과 SSH로 터널링을 하면 가능하다는 걸 알게되었습니다.
아래 URL을 참고 하였습니다.https://hbase.tistory.com/328
[Linux] ssh 터널링(ssh port forwarding) - Local / Remote / Dynamic Tunneling
sh는 Secure SHell의 줄임말로 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜이다. 당연하게도 ssh는 원격 호스트로 접속하기 위해 가장 많이 사용된다. 그런데 ssh는 원격 호스트로의 접속과
hbase.tistory.com
ssh -CNf -i 인스턴스키.pem -L 3306:127.0.0.1:3306 centos@DB_IP
이렇게 tomcat - mysql 연동 테스트를 1 tier, 2 tier에서 간결하게 해보았습니다.