[Linux] ubuntu에 MySql 소스 설치

ubuntu-20.04에 MySql를 소스 설치해보자.

ubuntu APM 소스 설치

이 포스트는 ubuntu-20.04에 APM(Apache, PHP, MySql)을 소스 설치하는 과정이며, 아래의 세 가지 순서의 포스팅으로 이루어져 있다.
[Linux] ubuntu에 Apache 소스 설치
[Linux] ubuntu에 MySql 소스 설치
[Linux] ubuntu에 php 소스 설치

작업 환경

macOS에서 virtualBox로 가상머신 ubunto를 만들고 그 안에 소스 설치를 진행한다.

macOS : Big Sur 11.4
VirtualBox : 6.1.16
ubuntu : 20.04.2.0-desktop

권한 부여 & 설치 경로

설치에 필요한 권한을 부여받기 위해 다음의 명령어를 입력하고 패스워드를 입력한다.

$ sudo su

컴파일 설치는 관례상 /usr/local에 설치하므로 해당 경로로 이동한다.

$ cd /usr/local

관련 패키지 설치 및 apr, apr-util 설치

관련 패키지

$ apt-get update
$ apt-get install vim cmake gcc g++ libncurses5-dev libxml2-dev openssl libssl-dev curl libcurl4-openssl-dev libjpeg-dev libpng-dev libfreetype6-dev libsasl2-dev autoconf libncurses5-dev

컴파일에 필요한 관련 패키지들을 설치해준다.

명령어

  • cd : 위치 이동 명령어
  • cp : 복사 명령어
  • wget : 지정한 주소로 부터 파일을 다운받는 명령어
  • tar xvfz : tar.gz 형식의 압축을 풀어주는 명령어
  • make : 소스를 컴파일해주는 명령어
  • make install : make를 통해 만들어진 설치 파일을 설치해주는 명령어

make -> make install 의 순서로 소스로 된 프로그램 설치 진행

Command ‘make’ not found

make와 관련된 설치를 하지않는다면 Command 'make' not found 라는 메세지가 나오기 때문에 다음의 두 명령어를 입력한다.

$ apt install make

MySql 계정 만들기

groupadd mysql
useradd -g mysql -s /bin/bash -m mysql

MySql 다운로드 & 컴파일 설치

$ wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20.tar.gz
$ tar xvf mysql-5.7.20.tar.gz
$ cd mysql-5.7.20
$ sudo cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-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=1 -DWITH_BOOST=/usr/local/mysql/boost

cmake를 통해 빌드를 하며, cmake는 앞서 관련 패키지에서 설치했었다.

$ make
$ make install

1

make 입력 후엔 상당히 긴 시간이 소모되고, 위와 같이 완료된다.

2

make install을 입력하면 위와 같이 설치가 완료된다.

데이터베이스 초기화 & 권한 수정

$ cd /usr/local/mysql
$ echo “./bin/mysql_install_db –user=mysql –datadir=/usr/local/mysql/data -v”
$ ./bin/mysql_install_db –no-defaults –user=mysql –datadir=/usr/local/mysql/data –basedir=/usr/local/mysql -v

위의 명령어들을 입력해 주면 [NOTE]로 시작하는 메시지들과 함께 초기화가 완료된다.

$ chown -R mysql:mysql /usr/local/mysql

권한을 수정해 준다.

환경 설정

$ vim /usr/local/mysql/my.cnf

vi보다 vim이 편하기 때문에 vim을 사용하여 파일을 열어주었다.

해당 파일을 다음의 내용을 입력 후 저장해 준다.

[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

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

서비스 mysqld 파일을 복사해 준다.

$ vim /etc/init.d/mysqld

mysqld를 열어서 다음과 같이 디렉터리를 입력하고 저장해 준다.

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

mysqld 서비스 등록 및 실행

$ update-rc.d mysqld defaults
$ service mysqld start
$ service mysqld status
$ sudo service mysqld stop

3
service mysqld status을 실행하면 다음과 같이 mysqld의 상태를 볼 수 있다.

암호 초기화

$ ./bin/mysqld_safe –skip-grant-tables &

위 명령어를 입력 후

./bin/mysql -u root -p

위 명령어를 입력하면 Enter password: 메시지가 나오고 비밀번호를 등록해 주면 mySql이 열린다.

4