[AWS 3-Tier 구축하기 7] AWS Linux ATM 구성(Apache, Tomcat, MySQL) - MySQL wget 설치 및 데이터 생성
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/
원하는 버전
선택하고 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 해결
여기서 권한을 root로 바꿔주어야 한다. 무조건 ! ! sudo su 명령으로 권한 root로 바꿔주고 해야 한다! ! !
make && make install
이제 빌드를 해야하는데 여기서 시간이 아주 오래 걸린다. 한.. 40분 정도..?
당연히 여기서도 에러가 발생하면 안 된다.
빌드 100%까지 하고 나서 갑자기 에러가 발생한다면 아래 참고..
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
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=moonv11&logNo=60176351289