본문 바로가기

Back End/Server

[Server] Ubuntu 20.04 APM(Apache2,PhP,Mysql) 소스 설치 -2

-2- 

Mysql 설치


목차

  1. Mysql 설치 전 setting
  2. Mysql 설치
  3. Mysql 설정 및 실행
  4. 서버 실행 및 종료
  5. Mysql 서비스 등록

 

설치과정

1. Mysql 설치 전 setting

$ 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

 > 컴파일 설치를 위한 기본 package들을 설치하여준다

 

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

 > wget을 통해 Mysql-8.0 버전의 압축파일을 다운받은 후 해당 압축파일을 풀어준다.

 

2. Mysql 설치

$ /usr/local/mysql-8.0.19# rm -f CMakeCache.txt
$ /usr/local/mysql-8.0.19# mkdir millimysql

 > 버전이 바뀌면서, Source Directory내에 빌드를 위한 Directory를 추가 생성하여, 그 Directory에서 작업하도록 강제 권고 되어 오류가 발생하므로, 아래에 millimysql(이름은 제한 없음) 디렉토리를 새로 만들어주었다.

 

$ /usr/local/mysql-8.0.19/millimysql# 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

 > 새로만든 directory 내에서 cmake .. 을 사용하여, cmake 작업을 수행하여준 후, make 및 make install을 하여준다.

 > 이 때, Swap 공간이 부족하면, 메모리 공간 에러가 발생 할 수 있으므로 주의하여준다.

 

$ /usr/local/mysql/boost# wget http://downloads.sourceforge.net/project/boost/boost/1.70.0/boost_1_70_0.tar.gz
$ /usr/local/mysql/boost# tar xvfz boost_1_70_0.tar.gz

 > 이 때 boost file이 제대로 깔리지 않을 경우, 다음 directory로 이동하여 다시 다운받아 주어야 한다.

 

 > 성공적으로 cmake가 되었음을 확인 할 수 있다.

 

$ /usr/local/mysql-8.0.19/millimysql# make
$ /usr/local/mysql-8.0.19/millimysql# make install

make
make install

 > 그 후 make 및 make install 작업을 하여 준다.

 

3. Mysql 설정 및 실행

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

 > mysql-files directory를 만들어 준 후, 각 파일들에 대한 권한을 바꿔 주어야 한다.

 

$ /usr/local/# adduser mysql

 > 이 때 Mysql은 DB의 소유권이 mysql로 지정되어야 있어야 하는데, mysql user가 없다면 오류가 나게 된다. 따라서 잘못된 사용자라는 오류가 발생한다면 mysql 이라는 이름으로 계정을 하나 만들어 준다.

 

$ /usr/local/mysql# chown -R mysql:mysql /usr/local/mysql
$ /usr/local/mysql# chown mysql:mysql mysql-files
$ /usr/local/mysql# chmod 750 mysql-files

 > 그 후 권한을 변경하여준다.

 

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

DB초기화 작업

 > mysqld는 Mysql 서버로, 백그라운드에서 돌아가고 있는 프로세스이다. Mysql 서버는 Mysql database와 table을 포함하는 data directory에 대한 access를 관리하여 준다.

  --basedir: base directory의 주소를 뒤의 /usr/local/mysql로 하여준다.

  --datadir: data directory의 주소를 뒤의 /usr/local/mysql/data로 하여준다.

 

이 때 랜덤한 문자열로 이루어진 파란색 박스 안의 temporary password가 발급된다. 

 

 > 이 때 발급받은 것은 임시비밀번호이므로 비밀번호를 변경해주어야 후에 사용 가능하다.

 

4. 서버 실행 및 종료

$ /usr/local/mysql/bin# ./mysqld_safe --user=mysql &

 > 백그라운드로 서버를 실행시켜주면, 해당 프로세스의 ID를 볼 수 있게 된다.

 

$ ps -ef | grep mysqld

실행중인 process에 mysql 을 확인 할 수 있다.

 > ps 명령어를 통해 현재 수행중인 프로세스를 확인하면 mysqld 서버가 돌아가고 있는 것을 확인 할 수 있다.

 

$ /usr/local/mysql/bin# ./mysql -u root -p

 > 위에서 발급받은 임시 비밀번호를 통해 mysql server에 연결 할 수 있게 된다.

 

$ /usr/local/mysql/bin# ./mysqladmin -u root -p shutdown

shutdown

 > shutdown을 통해 서버를 종료 시킬 수 있다.

 > 이 때 ps -ef | grep mysqld 를 통해 mysql 프로세스가 종료됨을 확인하며 서버가 종료된 것을 확인 할 수 있다.

 

5. Mysql 서비스 등록

$ /usr/local/# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
$ /usr/local/# vi /etc/init.d/mysqld

 > 자동실행을 등록하여, 서버가 실행 될 때, 자동으로 mysql 또한 실행 되도록 하여줄 수 있다.

 basedir=/usr/local/mysql 
 datadir=/usr/local/mysql/data

 > mysqld 파일의 basedir과 datadir 뒤에 다음과 같은 경로를 추가해 주어야 한다.

 

$ /usr/local# update-rc.d mysqld defaults

 > mysqld 서비스를 등록하는 명령어이다.

 

$ /usr/local# service mysql start
$ /usr/local# service mysql stop
$ /usr/local# service mysql restart
$ /usr/local# service mysql status //서버 상태 확인. 나갈 땐 q

 > 위의 service 명령어를 통해, mysql 서버를 간단하게 키고, 끄고, 조회할 수 있게 된다.

 

$ /usr/local/# vi /etc/my.cnf

 > my.cnf 파일을 수정하여 환경 설정을 수정해 줄 수 있다.

 [mysqld]
 bind-address=0.0.0.0
 port=3306 
 basedir=/usr/local/mysql
 datadir=/usr/local/mysql/data

 > 위의 내용을 추가해주면 ./mysqld_safe --user=mysql & 실행 시 옵션에 port가 추가되는 것을 확인 할 수 있게된다.

 

참조링크

1. https://kldp.org/node/80531

2. https://velog.io/@oyeon/Ubuntu-20.04-Mysql-8.0.19-%EC%86%8C%EC%8A%A4-%EC%84%A4%EC%B9%98%EC%BB%B4%ED%8C%8C%EC%9D%BC-%EC%84%A4%EC%B9%98-%EC%88%98%EB%8F%99-%EC%84%A4%EC%B9%98

3. https://jirak.net/wp/cmake-error-for-mysql-8-0-15-please-do-not-build-in-source/