프로젝트/컴파일 설치로 AWS 3-Tier 구축하기(+테라폼)

[AWS 3-Tier 구축하기 7] AWS Linux ATM 구성(Apache, Tomcat, MySQL) - MySQL wget 설치 및 데이터 생성

su-mmer 2023. 4. 5. 15:45
728x90

 

WEB01, 02 Apache 2.4.X
WAS01, 02 Tomcat 8.5.X
DB01 MySQL 5.7.X

드디어 마지막~~

 

 

보안그룹 설정

db-sg 인바운드 규칙 설정

 

was-sg 아웃바운드 설정

 

MySQL 소스 설치

https://downloads.mysql.com/archives/community/

 

MySQL :: Download MySQL Community Server (Archived Versions)

Please note that these are old versions. New releases will have recent bug fixes and features! To download the latest release of MySQL Community Server, please visit MySQL Downloads. MySQL open source software is provided under the GPL License.

downloads.mysql.com

 

원하는 버전 선택하고 Operating System: Source Code, OS Version: All Operating System으로 선택해준다.

두 가지 Archive 중 아무거나 다운받아도 된다.

 

yum --allowerasing install -y gcc gcc-c++ openssl curl autoconf ncurses-devel bison zlib curl bzip2-devel cmake ncurses patchelf libtirpc libtirpc-devel rpcgen numactl numactl-devel

의존성을 설치 한다.

--allowerasing 옵션으로 충돌하는 패키지를 바꾸거나 제거할 수 없는 패키지를 건너뛴다.

 

try to add '--allowerasing' to command line to replace conflicting packages or '--skip-broken' to skip uninstallable packages

 

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.23.tar.gz

/usr/local/src/경로에 압축파일 다운

 

# mysql 압축파일 해제
tar xvzf mysql-boost-5.7.23.tar.gz

# mysql 폴더 경로 이동
mv mysql-5.7.23/ /usr/local/mysql-5.7.23

이동하고 mysql 폴더 내로 이동

폴더 내에 cmakelist.txt 파일이 있는지 확인 ! ! (아주 중요) 없으면 wget으로 잘못된 파일을 받은 것이므로 cmake 파일이 있는 폴더를 다운로드하도록 하자,, 어떻게 알앗냐고 나도 알고싶지 않았어

 

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql57 \
-DMYSQL_DATADIR=/usr/local/mysql57/data \
-DMYSQL_UNIX_ADDR=/usr/local/mysql57/mysql.sock \
-DSYSCONFDIR=/usr/local/mysql57 \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_USER=mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DDOWNLOAD_BOOST=0 \
-DWITH_BOOST=./boost

여기서 warning은 괜찮은데 에러는 뜨면 안 된다.

 

이렇게 Build 되었다고 뜨면 빌드 파일 생성 완료

 

-DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory> 에러 발생 시 해결은 아래 글 참고

2023.04.05 - [트러블 슈팅] - CMake Error at cmake/boost.cmake:81 해결

 

CMake Error at cmake/boost.cmake:81 해결

CMake Error at cmake/boost.cmake:81 (MESSAGE): You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST= This CMake script will look for boost in . If it is not there, it will download and unpack it (in that directory) for you. If you are inside a firewall

su-mmer.tistory.com

 

여기서 권한을 root로 바꿔주어야 한다. 무조건 ! ! sudo su 명령으로 권한 root로 바꿔주고 해야 한다! ! !

 

make && make install

이제 빌드를 해야하는데 여기서 시간이 아주 오래 걸린다. 한.. 40분 정도..?

당연히 여기서도 에러가 발생하면 안 된다.

 

빌드 100%까지 하고 나서 갑자기 에러가 발생한다면 아래 참고..

2023.04.05 - [트러블 슈팅] - CMake Error at cmake/do_abi_check.cmake:73 (MESSAGE): sed returned error No such file or directory 해결

 

CMake Error at cmake/do_abi_check.cmake:73 (MESSAGE): sed returned error No such file or directory 해결

말이 많다. 왜냐. 이거 찾느라 이틀 썼거든. ㅠ CMake Error at cmake/do_abi_check.cmake:73 (MESSAGE): sed returned error No such file or directory 이런 에러 메세지가 뜬다면 현재 abi_check.out 파일을 만들 권한이 없는 것

su-mmer.tistory.com

 

install이 끝나면 /usr/local/mysql57 디렉토리가 생긴다.

 

MySQL 설정

sudo vi /usr/local/mysql57/my.cnf

my.cnf에 아래 내용 통째로 붙여준다.

[mysqld]
# port=3306
# basedir=/usr/local/mysql
# datadir=/usr/local/mysql/data
# pid-file=/usr/local/mysql/mysqld.pid
# log_error=/usr/local/mysql/mysql_error.log
# lc-messages-dir=/usr/local/mysql/share

init_connect=SET collation_connection = utf8_general_ci
init_connect=SET NAMES utf8
character-set-server=utf8
collation-server=utf8_general_ci
# table_cache=1024
max_connections=2048
max_user_connections=500
max_connect_errors=10000
wait_timeout=300
query_cache_type = 1
query_cache_size = 128M
query_cache_limit = 5M
slow_query_log
long_query_time=3
max_allowed_packet=16M
sort_buffer_size = 2M
# skip-innodb
skip-name-resolve
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

[mysql]
default-character-set=utf8

[client]
default-character-set=utf8

my.conf 파일 수정

 

sudo chown -R mysql:mysql /usr/local/mysql57

mysql 설치한 디렉토리를 mysql 계정으로 권한을 수정한다.

 

cd /usr/local/mysql57
bin/mysql_install_db --no-defaults --user=mysql --datadir=/usr/local/mysql57/data --basedir=/usr/local/mysql57 -v

MySQL 데이터베이스 초기화

 

cp /usr/local/mysql57/support-files/mysql.server /etc/init.d/mysqld57
vi /etc/init.d/mysqld57

mysql.server 파일 복사하고 수정한다.

 

basedir=/usr/local/mysql57
datadir=/usr/local/mysql57/data

basedir, datadir 경로 수정해준다.

 

chkconfig --add mysqld57
chmod +x /etc/init.d/mysqld57
chkconfig --list
sudo chkconfig --level 345 mysqld57 on

mysql 서비스 자동 실행 등록

 

sudo service mysqld57 start

mysql 서비스 실행

실행 SUCCESS!

 

service mysql57 stop

실행되는거 확인했으면 중지시켜준다. 비밀번호 없이 root 권한으로 실행시켜야 한다.

 

MySQL 접속

sudo bin/mysqld_safe --skip-grant-tables &

--skip-grant-tables 없이 그냥 로그인하게 되면 정해진 password가 없어서 mysql에 접속할 수 없다.

따라서 --skip-grant-tables 옵션으로 mysqld_safe 모드로 mysql에 접속해서 root 비밀번호를 바꿔주자.

 

만약 위 옵션을 켜고 mysql에 발생했는데 에러가 발생한다면 ps로 실행 중인 프로세스를 확인하여 혹시 mysqld_safe가 여러 개 작동 중인지 확인한다. 다 삭제하고 다시 하면 된다.

 

이제 Enter password에서 엔터로 일단 접속이 가능해진다.

root의 password 부터 변경하자.

 

error log를 확인하거나 임시 비밀번호를 확인하는 방법도 있다.

 

use mysql;
update user set authentication_string = password('q1w2e3!') where user = 'root';
flush privileges;
quit

root의 비밀번호를 임시로 변경하고 flush로 저장한 후에 mysqld_safe 모드를 종료한다.

 

mysql -u root -p로 다시 sql에 접속할 때 방금 설정한 password를 입력하면 접속 가능하다.

 

뭔가를 하려고 하면 비밀번호를 다시 설정하라고 할텐데, 지금 접속한 비밀번호는 임시 비밀번호라 set password로 다시 비밀번호를 생성한다.

 

데이터테이블 생성

CREATE DATABASE testDB default CHARACTER SET UTF8;

테이블 이름은 소문자만 사용하는 게 좋은데 까먹고 대문자를 써버렸다.

귀찮으니까 그냥 진행,,

 

계정 생성

use mysql;

CREATE USER 'was01'@'10.0.180.44' IDENTIFIED BY 'q1w2e3!';
CREATE USER 'was02'@'10.0.180.105' IDENTIFIED BY 'q1w2e3!';

GRANT SELECT ON testDB.* TO 'was01'@'10.0.180.44';
GRANT SELECT ON testDB.* TO 'was02'@'10.0.180.105';

flush privileges;

select host, user from user;

 

권한 제대로 부여 됐는지 확인

 

USE testDB;

CREATE TABLE color(
     _id INT PRIMARY KEY AUTO_INCREMENT,
     color VARCHAR(32) NOT NULL,
     object VARCHAR(12) DEFAULT 'FOO');
     
DESCRIBE color;

 

INSERT INTO color (color, object) VALUES('red', 'apple');
INSERT INTO color (color, object) VALUES('yellow', 'banana');
INSERT INTO color (color, object) VALUES('green', 'frog');
INSERT INTO color (color, object) VALUES ('orange', 'orange');

select * from color;

 

이제 WAS 서버랑 DB 연동하면 끝~ (b˙◁˙ )b

 

 

참고

https://bluexmas.tistory.com/1174

 

Amazon Linux(centos) : MySQL 5.7.23 컴파일, 설치

출처 Ubuntu server에 mysql 5.5.x 설치하기 -pupustory@- - Tistory [Linux/CentOS] Mysql을 컴파일해서 설치해보자 - AT BLOG 리눅스 정보 조회 출처 : 리눅스 종류 확인, 리눅스 버전 확인 - 제타위키 $ cat /etc/*-release

bluexmas.tistory.com

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=moonv11&logNo=60176351289 

 

centOS 6.3에서 mysql 5.5 소스 설치

리눅스에서 어떤 패키지를 설치할때 yum이나 rpm 명령을 이용한 설치보다 직접 소스파일을 받아...

blog.naver.com

 

728x90