Ubuntu에 MySQL 설치하기

ik_13038·2022년 8월 7일
0

라이징캠프 1주차

목록 보기
4/7

첫 주차 과제

  • Ubuntu 설치하기👌
  • Ubuntu에 Apache 설치하기👌
  • Ubuntu에 PHP 설치하기
  • Ubuntu에 MySQL 설치하기 👌
  • 기타 SQL 쿼리문 연습해보기
  • Linux CLI 환경에 익숙해지기

이제 APM을 설치하는데 있어 PHP와 MySQL이 남았는데 MySQL을 먼저 설치하기로 했다.
이전 블로그에서 필수 패키지로 설명한 건 아래와 같았다.

필요 패키지

1) CMake
2) 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 library : apt-get install libncurses5-dev libncursesw5-dev 로 다운
8) Perl
추가 9) pkg-config - 본인은 중간에 이것 때문에 make 과정이 실패하였다.

따라서 이전에 설치했던 필수 패키지를 제외하고 아래와 같은 명령어를 실행했다.

$ 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
$ apt-get pkg-config

  • pkg-config가 없어 오류를 뿜어 추가 설치하였다.

참고로 설치 여부 확인법으로 아래 명령어가 있다고 한다.

$ dpkg -l | grep [이름]

MYSQL 다운로드 및 설치


MySQL 공식홈페이지


공식 홈페이지에서 버전을 확인할 수 있다.
참고로 선택창에서 해당 Linux Ubuntu 버전을 선택하면 호환되는 버전을 알 수 있다.

MySQL 8.0.28 소스설치 파일 다운로드 및 압축해제

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

다운로드를 이전에 사용했던 wget 명령어를 통해 받은 이후 압축을 해제한 다음에 아래의 명령어를 terminal에 입력하면 1차 관문은 끝이 난다.
문제는 make 과정에서 3~5시간 가량 소진된다는 점과..중간에 오류가 나면 다시 그 5시간을 기다려야한다는 점이다. 중간에 실수 (mkdir로 따로 dir에서 작업하지 않는 등..)가 있으면 다시 작업해야한다는 점도 골치가 아팠다.
참고로 앞선 설치에서 용량을 작게 설정했으면 충분하게 재설정하여 재설치할 것을 권장한다..

mkdir로 디렉토리를 추가로 만드는 이유는
소스 디렉토리 내에 build 를 위한 디렉토리를 추가 생성하고
(옵션에서 생성하는 디렉토리(dir_mysql) – “디렉토리 이름은 자유롭게 가능”) 그 하단에서 작업을 진행하도록 권도하기 때문이라고 한다.

$ cd mysql-8.0.25
$ rm -f CMakeCache.txt
$ mkdir dir_mysql(원하는 이름으로)
$ 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
$ make test
$ make install

  • 주로 실행하자마자 오류가 나는 경우는 오타나 공백 문제일 가능성이 높다.


설치 중에 위와 같은 창을 보고 식겁할 수 있는데 알아보니 warning에 불과하여 큰 문제는 없다고 한다. 허나 진행이 안되거나 오류가 나는 경우에는 링크를 참고하길 권장한다. 한 30분간 저 화면에서 멈춰서 해결방법을 찾던 중에 다시 돌아와보니 다시 진행 중이었다.

make가 완료되었다. (약 5시간 경과...) 앞선 블로그에서는 용량 부족으로 많은 오류를 뿜어내던데 다행히 그런 건 없었다. 혹시라도 용량 관련해서 보고 싶다면 아래 명령어를 참고해서 미리 파악해두자.

Linux 디스크 용량 확인 하기

df : 디스크 남은 용량 확인 (기본 명령어)
df -k : 킬로바이트 단위로 남은 용량 확인
df -m : 메가 바이트 단위로 남은 용량 확인
df -h : 깔끔하게 보여줌
df . : 현재 디렉토리가 포함된 파티션의 남은 용량 확인
du : 현재 디렉토리에서 서브 디렉토리까지 용량 확인
du -a : 현재 디렉토리의 사용량 파일단위로 출력
du -s : 총 사용량
du -h : 깔끔하게 보여줌
du -sh * : 한단계 서브 디렉토리 기준으로 보여줌

make가 완료되었으니 make test로 test를 진행해보자.
시간이 조금 걸리고 fail되는 부분이 조금 있으나 일단 진행해보기로 했다.

앞선 게시글에서 미리 Ubuntu 20.04 버전은 default로 2GB의 swap이 잡혀있어 install 시 수정이 필요하다고 하였다. 미리 조치를 취하자.
방법은 직접 virtual box 설정을 만지는 방법terminal에서 명령어를 치는 방법 등이 있는데 linux와 친해지기 위해 명령어를 통해 작업을 진행하였다.

먼저 swap을 비활성화 시킨다

$ sudo swapoff -v /swapfile

fallocate 명령어로 메모리 크기를 조정하고, 권한을 설정한 다음 mkswap 명령어로 swapfile을 만들고 swapon으로 활성화 시킨다.

swap을 8GB로 설정

$ sudo fallocate -l 8G /swapfile

권한 설정

$ sudo chmod 600 /swapfile

swap file 만들기

$ sudo mkswap /swapfile

swap file 활성화

$ sudo swapon /swapfile

용량 늘려서
make install까지 성공했다.

MYSQL DB 초기화


(1)그룹 지정

  • -r : system account
  • -g : 그룹 지정
  • -s : user 의 로그인 shell
$ groupadd mysql
$ useradd -r -g mysql -s /bin/false mysql

(2) 디렉토리 생성

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

(3)권한주기

chown: 파일의 소유자를 변경
-R : 하위 디렉토리까지 소유권 할당
chmod : 사용권한을 변경

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

(4)기본 DB 생성

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

임시비밀번호(temporary password)를 확인할 수 있었으나 warning이 거슬리는 부분이다. 이는 이 링크를 참고하여 추후 해결할 예정이다.

MYSQL 서버 시작


서버시작

$ bin/mysqld_safe —user=mysql &
$ ps -ef | grep mysqld
bin/mysql -u root -p
Enter password: 비밀번호 입력  #앞서 확인한 임시 비밀번호 입력


정상작동된다..!

비밀번호 변경

ALTER USER 'root'@'localhost' IDENTIFIED By '원하는 비밀번호';
exit

서버 종료

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

MySQL 서비스 등록

서비스를 등록하면 서버가 실행되었을 때, mysql 이 자동으로 실행된다.

mysqld 파일을 복사한다.

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

mysqld 파일을 열어서 basedir 와 datadir 를 설정한다.

$ sudo vi /etc/init.d/mysqld

mysqld 서비스를 등록한다.

$ update-rc.d mysqld defaults

reboot로 다시 시작한 뒤 보면 서버시작 안 해도 서버 시작이 되어있음을 확인할 수 있다.

$ reboot 
$ ps -ef | grep mysqld

기타 설정 (my.cnf)

앞서 언급했던 오류와 기타 환경설정을 위해
/etc/mysql/my.cnf 파일을 수정했다.

$ sudo su
$ vi /etc/my.cnf
[mysqld]
bind-address=0.0.0.0
port=3306
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

+mysql 명령어

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

참고 출처


https://velog.io/@ogu1208/Ubuntu-Ubuntu-20.04-APM-%EC%86%8C%EC%8A%A4-%EC%84%A4%EC%B9%98-2.-MySQL
https://velog.io/@yeonii/LinuxUbuntu20.04-Mysql8.0.25-%EC%88%98%EB%8F%99%EC%84%A4%EC%B9%98
https://happylulurara.tistory.com/139
https://blog.naver.com/islove8587/221970366883

profile
글 연습, 정보 수집

0개의 댓글