본문 바로가기
Server Developer/Server Basic

[Server] Ubuntu-20.04 APM 소스 설치 - MySQL 8.0.32

by 성 언 2023. 4. 7.

1. 필요한 패키지 설치

& 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
 
/usr/local# apt-get install make
/usr/local# apt-get install gcc
/usr/local# apt-get install g++
/usr/local# apt-get install perl

 

 

 

 

 

2. 소스 설치 파일 다운로드 & 압축 해제

최신의 MySQL 소스를 설치합니다.

MySQL :: Download MySQL Community Server

 

MySQL :: Download MySQL Community Server

Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Debian Linux SUSE Linux Enterprise Server Red Hat Enterprise Linux / Oracle Linux Fedora Linux - Generic Oracle Solaris macOS Source Code Select OS Version: All Windows (x86

dev.mysql.com

저는 8.0.32 버전을 다운 받았습니다.

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

 

3. MySQL 소스 설치

$ cd mysql-8.0.32
$ mkdir dir_mysql 이름 ex)eonserver
$ cd dir_mysql
$ 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

위의 코드는 MySQL 8.0.32 버전을 소스 코드로부터 빌드하여 설치하는 과정에서 사용되는 커맨드들입니다. 각 커맨드들이 하는 일은 다음과 같습니다:

  1. cd mysql-8.0.32: 현재 디렉토리를 "mysql-8.0.32" 디렉토리로 변경합니다. 이때 해당 디렉토리가 존재한다고 가정합니다.
  2. mkdir dir_mysql 이름 ex)eonserver: "dir_mysql"이라는 이름의 새로운 디렉토리를 생성합니다. 이때 "이름" 자리에는 사용하고자 하는 디렉토리의 이름을 입력하면 됩니다.
  3. cd dir_mysql: 생성한 "dir_mysql" 디렉토리로 이동합니다.
  4. cmake: CMake를 실행합니다. CMake는 크로스 플랫폼 빌드 자동화 도구로, 소스 코드에서 빌드를 실행하기 전에 빌드 구성을 구성합니다.
  5. ..: 상위 디렉토리로 이동합니다.
  6. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql: MySQL이 설치될 위치를 "/usr/local/mysql"로 지정합니다.
  7. -DMYSQL_DATADIR=/usr/local/mysql/data: MySQL 데이터 디렉토리를 "/usr/local/mysql/data"로 지정합니다.
  8. -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock: MySQL 서버 소켓 파일의 경로를 "/usr/local/mysql/mysql.sock"으로 지정합니다.
  9. -DMYSQL_TCP_PORT=3306: MySQL TCP 포트를 3306으로 지정합니다.
  10. -DDEFAULT_CHARSET=utf8: MySQL 기본 문자셋을 "utf8"로 지정합니다.
  11. -DDEFAULT_COLLATION=utf8_general_ci: MySQL 기본 콜레이션을 "utf8_general_ci"로 지정합니다.
  12. -DSYSCONFDIR=/etc: MySQL 시스템 구성 파일이 저장될 디렉토리를 "/etc"로 지정합니다.
  13. -DWITH_EXTRA_CHARSETS=all: MySQL에서 모든 문자셋을 지원하도록 설정합니다.
  14. -DWITH_INNOBASE_STORAGE_ENGINE=1: InnoDB 스토리지 엔진을 빌드하도록 설정합니다.
  15. -DWITH_ARCHIVE_STORAGE_ENGINE=1: Archive 스토리지 엔진을 빌드하도록 설정합니다.
  16. -DWITH_BLACKHOLE_STORAGE_ENGINE=1: Blackhole 스토리지 엔진을 빌드하도록 설정합니다.
  17. -DDOWNLOAD_BOOST=1: Boost 라이브러리를 다운로드하도록 설정합니다.
  18. -DWITH_BOOST=/usr/local/mysql/boost: 다운로드한 Boost 라이브러리의 경로를 "/usr/local/mysql/boost"로 지정합니다.
  19. make: make를 실행하여 소스 코드를 컴파일합니다. 이 단계에서는 CMake로 구성된 빌드 시스템에 따라 필요한 모든 소스 파일을 컴파일하고 실행 파일을 생성합니다. 이 작업은 상당히 오랜 시간이 걸릴 수 있습니다.

이후에는 MySQL을 시스템에 설치할 수 있습니다. make install 명령어를 사용하여 MySQL을 "/usr/local/mysql" 디렉토리에 설치할 수 있습니다. 이후에는 MySQL 서버를 시작할 수 있습니다.

$ make install

 

 

 

4. MySQL DB 초기화

  1. MySQL 그룹 및 유저 생성

위의 명령어는 MySQL 서버를 실행하는 데 필요한 시스템 사용자인 "mysql"을 생성하는 명령어입니다.

  1. groupadd mysql: "mysql"이라는 이름의 새로운 그룹을 생성합니다.
  2. useradd -r -g mysql -s /bin/false mysql: "-r" 옵션은 시스템 계정을 생성할 때 일반적으로 사용자 계정과는 다르게 "system 계정"으로 생성합니다. "-g" 옵션은 "mysql" 그룹에 사용자를 추가하도록 지정합니다. "-s" 옵션은 사용자의 로그인 셸을 "/bin/false"로 설정합니다. 이는 사용자 계정이 로그인할 수 없도록 하는 것입니다. 마지막으로 "mysql"이라는 사용자 계정을 생성합니다.

이렇게 생성된 "mysql" 사용자 계정은 MySQL 서버의 실행 및 데이터베이스 파일의 소유자로 사용됩니다.

/usr/local/mysql-8.0.32/dir_mysql# groupadd mysql

/usr/local/mysql-8.0.32/dir_mysql# useradd -r -g mysql -s /bin/false mysql

 

2. 디렉토리 생성

cd /usr/local
cd mysql
mkdir mysql-files

위의 명령어는 MySQL에서 사용할 데이터베이스 파일과 로그 파일을 저장할 디렉토리를 생성하는 명령어입니다.

  1. cd /usr/local: "/usr/local" 디렉토리로 이동합니다.
  2. cd mysql: MySQL의 설치 디렉토리인 "/usr/local/mysql" 디렉토리로 이동합니다.
  3. mkdir mysql-files: "mysql-files"라는 이름의 디렉토리를 생성합니다. 이 디렉토리는 MySQL에서 사용할 데이터베이스 파일과 로그 파일을 저장할 디렉토리로 사용됩니다.

 

 

 

 

3. 권한 주기

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

위의 명령어는 MySQL 설치 디렉토리와 데이터베이스 파일 디렉토리의 소유자를 "mysql" 사용자와 "mysql" 그룹으로 변경하고, 데이터베이스 파일 디렉토리의 권한을 설정하는 명령어입니다.

  1. chown -R mysql:mysql /usr/local/mysql: "/usr/local/mysql" 디렉토리와 그 하위 디렉토리의 소유자를 "mysql" 사용자와 "mysql" 그룹으로 변경합니다. 이는 MySQL 서버가 해당 디렉토리와 파일에 액세스할 수 있도록 하기 위한 것입니다.
  2. chown mysql:mysql mysql-files: "mysql-files" 디렉토리의 소유자를 "mysql" 사용자와 "mysql" 그룹으로 변경합니다. 마찬가지로, MySQL 서버가 해당 디렉토리에 액세스할 수 있도록 하기 위한 것입니다.
  3. chmod 750 mysql-files: "mysql-files" 디렉토리에 대한 권한을 설정합니다. "7"은 소유자의 권한으로, 읽기, 쓰기, 실행 권한을 모두 부여합니다. "5"는 그룹의 권한으로, 읽기와 실행 권한을 부여하고 쓰기 권한은 제한합니다. "0"은 다른 사용자들의 권한으로, 어떤 권한도 부여하지 않습니다. 이렇게 권한을 설정함으로써, "mysql" 사용자와 "mysql" 그룹은 해당 디렉토리와 그 하위 디렉토리에 액세스할 수 있지만, 다른 사용자들은 액세스할 수 없습니다.

이러한 작업을 수행하여 MySQL 서버의 보안성을 높일 수 있습니다.

 

4. 기본 DB 생성

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

위의 명령어는 MySQL 데이터베이스 서버를 초기화하는 명령어입니다. 이 명령어를 실행하면, MySQL 데이터베이스 서버를 설치한 후 최초로 실행할 때 필요한 초기화 작업을 수행합니다.

  1. bin/mysqld: MySQL 서버 바이너리 파일인 "mysqld"를 실행합니다.
  2. --initialize: MySQL 데이터베이스 서버를 초기화합니다.
  3. --user=mysql: MySQL 서버를 실행할 때 사용할 사용자를 지정합니다. 여기서는 "mysql" 사용자를 지정합니다.
  4. --basedir=/usr/local/mysql: MySQL 서버의 기본 디렉토리를 지정합니다. 여기서는 "/usr/local/mysql"을 지정합니다.
  5. --datadir=/usr/local/mysql/data: MySQL 데이터베이스 파일이 저장될 디렉토리를 지정합니다. 여기서는 "/usr/local/mysql/data"를 지정합니다.

위의 명령어를 실행하면 MySQL 서버는 초기화 작업을 수행하고, 데이터베이스 파일과 로그 파일을 "/usr/local/mysql/data" 디렉토리에 생성합니다. 초기화 작업이 완료되면, MySQL 서버는 정지됩니다.

임시 비밀번호 생성을 완료했습니다. (나중에 필요해요 ~)

 

 

 

 

5. 서버 시작/ 사용

  1. MySQL 데이터베이스 서버 실행
$ bin/mysql_safe —user=mysql &

위의 명령어를 실행하면 MySQL safe 모드로 데이터베이스 서버를 백그라운드에서 실행하며, 이후에는 MySQL 클라이언트를 사용하여 데이터베이스에 접속할 수 있습니다.

2. MySQL 데이터베이스 서버 접속

%bin mysql -u root -p
Enter password: 비밀번호 입력

위 명령어는 MySQL 클라이언트를 실행하여 MySQL 데이터베이스 서버에 접속하는 명령어입니다.

+) 서버 실행 확인

# 서버 실행 확인
$ ps -ef | grep mysqld

위 명령어를 실행하면 현재 실행 중인 모든 프로세스 중에서 "mysqld"라는 이름이 포함된 프로세스를 검색하여 출력합니다. 이를 통해 MySQL 데이터베이스 서버가 현재 실행 중인지 확인할 수 있습니다.

3. 비밀번호 변경

#비밀번호 변경
ALTER USER 'root'@'localhost' IDENTIFIED By '새로운 비밀번호';
exit;

4. 서버 종료

위 명령어를 실행하면 MySQL 데이터베이스 서버를 종료할 수 있습니다. 실행하기 전에 비밀번호를 입력해야 합니다.

 

bin/mysqladmin -u root -p shut\\down
Enter password: 비밀번호 입력

 

 

 

 

 

 

 

ref:

https://velog.io/@ogu1208/Ubuntu-Ubuntu-20.04-APM-소스-설치-2.-MySQL

 

[Ubuntu] Ubuntu-20.04 APM 소스 설치 - 2. MySQL

1) CMake2) GNU make 3.75 이상3) GCC 7.1 이상4) C++ 또는 C99 컴파일러5) SSL library : libssl-dev 로 다운6) Boost C++ libraries : libboost-all-dev 로 다운7) ncurses lib

velog.io

https://yeni-days.tistory.com/7

 

[Ubuntu] Ubuntu-20.04에 APM 소스 설치(수동 설치)하기 - 2 (MySQL)

2021.11.25 - [Ubuntu] - [Ubuntu] Ubuntu-20.04에 APM 소스 설치(수동 설치)하기 - 1 (Apache, Mysql, php) [Ubuntu] Ubuntu-20.04에 APM 소스 설치(수동 설치)하기 - 1 (Apache, Mysql, php) 소스설치 소스설치, 수동설치, 컴파일설

yeni-days.tistory.com

 

댓글