CS

[서버/Server] APM 소스 설치(수동 설치)하기 - MySQL

🤖 Play with Android 🤖 2021. 9. 12. 15:55
728x90


📌  APM이란?

  • A(Apache) : 웹서버
  • P(PHP) : 웹 프로그래밍 언어
  • M(MYSQL) : 데이터베이스

APM 소프트웨어가 존재하는 것이 아니라, 이 3가지가 연동되어 운영되도록 만든 환경을 APM이라고 한다. Apache와 MySQL이 PHP와 호환성이 좋기 때문에 주로 세 프로그램을 묶어 패키지 형태로 사용한다.

 

 

 

 

📌  MySQL

 

MYSQL은 전 세계적으로 가장 널리 사용되고 있는 오픈 소스 데이터베이스이며, MySQL AB사가 개발하여 배포/판매하고 있는 데이터베이스(DataBase)이다.

표준 데이터베이스 질의 언어 SQL(Structured Query Language)을 사용하는 개방 소스의 관계형 데이터베이스 관리 관리시스템(RDBMS), 매우 빠르고, 유연하며, 사용하기 쉬운 특징이 있다.

 

 

 

 

 

패키지가 아닌 소스설치를 하는 이유

내가 사용하는 우분투(Ubuntu)를 예로 들면 apt라는 리눅스 계열의 패키지 관리 명령어 도구가 있다. 하지만 개인적인 목적이 아닌 회사에서 업무적인 목적이나 공공이 사용하는 경우 필요에 따라 패키지 설치를 막을 수 있다. 따라서 수동 설치를 해주기로 했다. (그리고 패키지 설치면 코드 몇 줄이면 끝나서 매우 간단하기도 하다)

 

 

 


 

 

 

MySQL 8.0.19 소스(수동) 설치

지난번에 Ubuntu 20.04.에 Apache 2.4.46 설치를 완료했다.

이번엔 MySQL 8.0.19버전을 소스(수동) 설치해 보겠다.

 

MySQL 공식문서에 설치해야 하는 패키지들이 명시에 되어 있다. (이어지는 글에 모두 나와 있으나 공식문서인 만큼 궁금한 사람은 보는 것을 추천한다.

 

 

 

 

 

 

MySQL 8.0.19 설치

MySQL 컴파일 설치를 위한 패키지 설치

$ sudo su
/usr/local# apt-get update
/usr/local# apt-get install cmake
/usr/local# apt-get install libssl-dev
/usr/local# apt-get install libboost-all-dev
/usr/local# apt-get install libncurses5-dev libncursesw5-dev

 

 

 

wget 명령어로 mysql 을 다운로드하고, tar xvfz로 압축을 풀어준다.

$ cd /usr/local
$ wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.19.tar.gz
$ tar xvfz mysql-8.0.19.tar.gz

 

 

이때 압축이 잘 풀렸나 궁금할 수 있는데 압축을 푼 파일의 경로에서

$ ls -l

 

을 통해 확인해 줄 수 있다.

 

설치된 것을 확인

 

 

 

 

MySQL 설치

  • cmake : 설치 옵션을 부여한다.
  • make : 빌드
  • make install : 설치
$ cd /usr/local/mysql-8.0.19
$ cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DSYSCONFDIR=/etc \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/mysql/boost 

$ make
$ make test
$ make install

 

 

여기서 cmake를 하면 다음과 같은 오류가 나올 것이다.

 

 

 

소스 디렉토리 내에 build를 위한 디렉터리를 추가 생성하고
(디렉터리 이름은 자유롭게 가능)
그 하단에서 작업을 진행하도록 권고(강제) 하기 때문에 이런 오류가 뜬것이라고 한다.

 

 

본인이 원하는 이름의 디렉토리를 mkdir을 통해 새로 만들어 주고 그 디렉터리에서 다시 cmake 해보도록 하자. (여기서는 camke 뒤에

 ..  을 꼭 붙여줘야 한다)

 

$ cd /usr/local/mysql-8.0.19 
$ mkdir <DIRNAME> 
$ cd <DIRNAME> 
$ cmake .. \ 

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ 
-DMYSQL_DATADIR=/usr/local/mysql/data \ 
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ 
-DMYSQL_TCP_PORT=3306 \ -DDEFAULT_CHARSET=utf8 \ 
-DDEFAULT_COLLATION=utf8_general_ci \ 
-DSYSCONFDIR=/etc \ 
-DWITH_EXTRA_CHARSETS=all \ 
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ 
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \ 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ 
-DDOWNLOAD_BOOST=1 \

 

그러나 다시 이러한 오류가 나온다.

 

 

에러를 보니 cmake/boost쪽에 오류가 난 것 같다.

아무래도 MySQL 5. 버전대에 사용하는 boost를 가져다 쓴 것이 화근인 듯

하여 가장 최근의 1_73_0의 boost를 새로 받아 다시 cmake 한다. 

그러나 같은 오류의 반복

그래서 에러문에 나와있는 1_70_0을 직접 구글링을 통해 찾아서 가져왔다.

 

 

이렇게 3개나 되는 boost파일을 받고 다시 cmake를 돌려보니 이제야 정상 작동한다. (같은 오류를 나오는 분들은 에러 문에 나와있는 버전을 찾아 받아보는 것을 권한다.)

 

이때 주의할 점은 cmake구문 마지막 줄을 

 

다음과 같이 경로 및 파일 수정해 주는 것을 잊지 않도록 주의한다. (나 같은 경우는 /usr/local/src/boost_1_70_0 으로 수정)

 

 

 

 

cmake가 완료됐으면 make와 make install을 해주면 된다.

여기서 꿀팁은 가상화 프로그램 (여기서는 패러럴즈)에 RAM사용량을 매우 많이 부여해 줄수록 make 시간이 단축된다.

RAM을 조금만 부여하면 정말 하루종일 걸릴 수도 있으니 주의하자 

나는 7GB를 부여하고 돌렸더니 30~40분정도 걸렸던 것 같다.

 

 

 

 

mysql 그룹 및 유저 생성

$ groupadd mysql
$ useradd -r -g mysql -s /bin/false mysql

 

mysql-files 디렉토리 생성

$ cd /usr/local/mysql
$ mkdir mysql-files

 

 

권한 설정

  • chown : change own 의 축약어로, 파일의 소유권자를 변경하는 명령어이다
    chown {소유권자}:{그룹식별자} {소유권을 변경하고 싶은 파일명} 형태로 명령어를 실행한다.
    즉, mysql-files 라는 디렉터리의 소유권을 mysql이라는 그룹의 mysql이라는 유저에게 할당하겠다는 뜻.
    chown 뒤에 -R 옵션을 붙여 하위 디렉토리까지 모든 소유권을 할당할 수 있다.
    ls -al 명령어로 소유권을 확인할 수 있다.
  • chmod : change mode 의 축약어로, 대상 파일과 디렉터리의 사용권한을 변경할 때 사용한다.
    chmod [옵션] [모드] [파일] 형태로 명령어를 실행한다.

 

기본 데이터베이스 설정

$ bin/mysqld --initialize --user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

 

위의 명령어를 입력하면 password가 뜨게 되는데 임시 비밀번호니 기록하는 것이 좋다.

 

 

 

비밀번호 변경

mysql 서버 실행

  • mysqld_safe : mysql 실행
$ bin/mysqld_safe --user=mysql &

& 명령어를 통해 백그라운드에서 프로세스를 실행시켜준다.

 

$ bin/mysql -u root -p

다음 명령어를 입력하면 password를 입력하라는 문구가 뜨는데 아까 나왔던 임시 비밀번호를 입력한다.

 

 

그러면 쉘 하면이 mysql> 로 변하면서 잘 실행이 되는 것을 확인할 수 있다.

이제 비밀번호를 변경해주자 

 

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';

 

어기서 'root-password'부분에 본인이 원하는 비밀번호를 입력하면 된다.

비밀번호 변경

 

서버를 종료하고 싶을때는 

$ bin/mysqladmin -u root -p shutdown

을 통해 종료할 수 있다.

 

 

 

 

 

 

 

Reference :

https://minhyeok-rithm.tistory.com/entry/Install-MySQL?category=854409 

https://salix97.tistory.com/141