본문 바로가기

서버/ubuntu(VM+APM)

Ubuntu 18.04 에 MySQL 8.0.21 수동설치하기

 

https://dev.mysql.com/doc/refman/8.0/en/installing-source-distribution.html

 

MySQL :: MySQL 8.0 Reference Manual :: 2.9.4 Installing MySQL Using a Standard Source Distribution

MySQL 8.0 Reference Manual  /  ...  /  Installing and Upgrading MySQL  /  Installing MySQL from Source  /  Installing MySQL Using a Standard Source Distribution 2.9.4 Installing MySQL Using a Standard Source Distribution To install MySQL from a st

dev.mysql.com

공식 홈페이지의 소스설치 메뉴얼.

 

 

 

 

1. MySQL 설치를위한 패키지 설치 확인.

https://dev.mysql.com/doc/refman/8.0/en/source-installation-prerequisites.html

에서 필요한 패키지들을 확인할 수 있다.

 

(1) CMake 

(2) GNU make 3.75 이상 : apt-get 으로 make 를 이미 설치해두었음

(3) GCC 5.3 이상: 아파치 설치할 때 설치함.

(4) C++ 또는 C99 컴파일러 : MySQL C API 가 필요하다고 하는데, GCC 와 G++ 이 이미 설치되어 있음

(5) SSL library : OpenSSL 을 사용한다고 하는데, 설치되어 있지않음, libssl-dev 로 다운받아야 함

(6) Boost C++ libraries : libboost-all-dev 로 다운받아야 함

(7) ncurses library : apt-get install libncurses5-dev libncursesw5-dev 로 다운받아야함

(8) Perl : 아파치 설치할 때 설치함.

 

$ dpkg -l | grep [이름]

dpkg는 데비안의 패키지확인 명령어로 패키지의 설치와 삭제여부등을 알 수 있다.

 

 

apt-get을 update후 패키지들을 설치한다.

$ apt-get update
$ apt-get install cmake
$ apt-get install libssl-dev
$ apt-get install libboost-all-dev
$ apt-get install libncurses5-dev libncursesw5-dev

 

 

 

2. MySQL Community Server 8.0.21 다운로드

 

https://dev.mysql.com/downloads/mysql/

에서 MySQL 다운로드 링크 확인.

 

Source Code, Generic Linux를 선택하면 tar파일의 링크를 확인할 수 있다.

 

 

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

 

 

 

3. MySQL 설치

$ cd /usr/local/mysql-8.0.21
$ mkdir geormysql01
$ cd usr/local/mysql-8.0.21/geormysql01

$ 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

처음 이런 에러가 났다. 찾아보니

소스 디렉토리 내에 build 를 위한 디렉토리를 추가 생성하고
(옵션에서 생성하는 디렉토리(olafmysql01) – “디렉토리 이름은 자유롭게 가능”)         

그 하단에서 작업을 진행하도록 권고한다고 한다.

 

->>>>    mkdir geormysql01이라는 디렉토리를 만들었다.

 

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

 

 

 

이 과정에서 make가 상당히 오래 걸렸다.

make를 눌러놓고 자고 일어나니 이런 에러가 떠 있었다. 찾아보니 램이 부족해서 나는 에러라 해서 virtualbox의 램을 늘리게 설정하려니 버튼이 먹지 않았다...

(지금와서 안 사실이지만 가상머신을 끌 때 현재 시스템 상태 저장하기로 끄면 램설정이 비활성화 된다... 시스템 전원 끄기로 끄면 램크기를 다시 지정할 수 있다.)

 

https://arima18.tistory.com/6

램 부족 오류 확인

 

free -m

mb단위로 메모리 상태 확인.

 

 

 

 

 

그래서 스왑 메모리를 사용하기로 한다.

kimhyun2017.tistory.com/20

 

Swap 메모리

Swap 메모리  - RAM에 용량이 부족할 경우 프로세스가 임시 저장되는 공간  - RAM을 사용한 것이라 하드디스크에 일정 공간을 SWAP메모리 공간으로   지정하여 사용을하며, 최악의 경우 메모리가 부

kimhyun2017.tistory.com

psychoria.tistory.com/717

 

[Ubuntu] 우분투 스왑 파일(swapfile) 생성 및 삭제

PC의 메모리는 일반적으로 8~32 GB 사이를 사용합니다. 메모리가 부족한 경우 메모리의 일부 내용을 디스크로 스왑(Swap)하게 됩니다. Windows의 가상 메모리와 같이 디스크의 일부를 메모리처럼 사용

psychoria.tistory.com

https://kibua20.tistory.com/40

 

[Tips] Ubuntu 20.04 에서 swap file 늘리기

용량이 큰 프로그램을 사용하다 보면  화면 업데이트 업데이트가 안되는 freezing 현상이 발생되고, 마우스 클릭을 하더라도 반응이 없거나 매우 느린 현상이 발생한다면 "Memory 부족 현상"을 의심

kibua20.tistory.com

 

 

 

그래서 스왑 메모리를 늘리려니 또

하드디스크를 그냥 다 써버린 것이다.... (이래서 virtualbox설정 때 고정이 아닌 가변디스크로 만들라는 것이다.. 아니면 넉넉하게 잡던가 ..)

 

$ df

파일시스템 용량 확인 명령어... withcoding.com/104

20GB고정으로 잡아놨는데 20GB다 써버려서 메모리뿐만 아니라 하드디스크도 문제였다.

 

 

technote.kr/156

가상머신 하드디스크 용량 늘리는법 (가변일때)

m.blog.naver.com/r2adne/220239005520

가상머신 하드디스크 용량 늘리는법 (고정일때)

 

 

 

그냥 가변으로 다시 만들기로 했다.

메모리 4GB 하드디스크 30GB가변으로하니 make가 너무 잘 되었다.

 

 

 

 

 

4. 데이터베이스 초기화

 

1) 그룹과 유저 생성.

$ groupadd mysql 
//mysql이라는 그룹을 지어서 관리

$ useradd -r -g mysql -s /bin/false mysql
// 사용자 추가 useradd
// -r : 시스템 계정
// -g : 그룹 지정
// -s : 로그인 쉘 지정
// 마지막 mysql은 사용자의 이름
$ groups
// 만들어진 그룹 조회

$ cat /etc/passwd
// 사용자 목록 조회

 

2) 디렉토리 생성

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

 

3) 디렉토리 사용자 및 그룹 소유권을 mysql 사용자 및 mysql 그룹에 부여하고 디렉토리 권한을 적절하게 설정한다.

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

chown 명령어는 change own 의 축약어로, 파일의 소유권자를 변경하는 명령어
chown {소유권자}:{그룹식별자} {소유권을 변경하고 싶은 파일명}

chown 뒤에 -R 옵션을 붙여 하위 디렉토리까지 모든 소유권을 할당

 

chmod [옵션] [모드] [파일] 형태로 명령어를 실행한다.

7진수(읽기,쓰기,실행)를 사용하며(111=7, 101=5) 750이라는 뜻은
- 소유자권한 : 읽기, 쓰기, 실행
- 그룹권한 : 읽기, 실행
- 전체권한 : 없음

 

4) 기본 데이터 베이스 생성

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

https://m.blog.naver.com/PostView.nhn?blogId=angkeloss&logNo=220070830538&proxyReferer=https:%2F%2Fwww.google.com%2F

 

Daemon(데몬) 이란 무엇인가?

출처 : http://powerhan.tistory.com/33 데몬(daemon) 이란?- 리눅스 시스템이 처음 가동될 때 실행되는 백...

blog.naver.com

mysqld의 d는 데몬을 뜻한다. 프로세스를 시작할 것을 보고 있는 리스너이다.

 

$ bin/mysql_ssl_rsa_setup

이과정에서 마지막에 출력되는 임시 비밀번호를 잘 기억해 두자.

 

 

 

 

 

5. root계정 암호 초기화

$ bin/mysqld_safe --user=mysql &
// mysql 서버 실행
$ ps -ef | grep mysqld
// 서버가 실행되고 있는지 확인

 

$ bin/mysql -u root -p
// MySQL 서버에 접속하는 명령어
// -u : root 유저로 접속

mysql서버와 연결후 위에서 받은 임시 비밀번호로 접속한다.

 

 

그 후

ALTER USER 'root'@'localhost' IDENTIFIED BY '사용할 비밀번호';

비밀번호를 입력해서 root계정의 암호를 설정한다.

 

 

$ bin/mysqladmin -u root -p shutdown
// 서버 종료 명령어

 

 

 

 

 

6. 환경설정

MySQL 의 옵션파일은 프로그램을 실행할때마다 명령줄에 옵션을 입력할 필요가 없도록 일반적으로 사용되는 옵션을 지정하는 편리한 방법이다.

프로그램이 옵션파일을 읽는지 여부를 확인하기 위해서는 mysqld --verbose --help 를 사용할 수 있다.

옵션파일은 my.cnf 라는 이름의 텍스트파일로 되어있다.

리눅스 운영체제에서 my.cnf 파일은 default 로 /etc/my.cnf 경로에서 읽어온다.

CMake 로 MySQL 을 빌드할때, SYSCONFDIR 를 설정해주었다면 해당 경로에서 my.cnf 파일을 읽어온다. 

 

 

vi /etc/my.cnf

 나의 경우엔 my.cnf파일이 만들어져 있었는데, 만든것에 수정하니 먹히질 않았다.

만약 있다면 삭제하고 새로 만들어주자.

 

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

이 코드를 입력해 주자.

 

 

 

 

 

 

 

 

 

 

 

$ service mysql start
$ service mysql stop
$ service mysql restart //서버를 중지했다가 다시 시작하는거
$ service mysql status //서버 상태 확인. 나가려면 q 누르기

이 명령어로 MySQL 서버를 시작하고 종료할 수 있다.

 

 

 

 

 

 

참고 블로그 : https://salix97.tistory.com/141?category=837576