미스터 역마살

리눅스에 Mysql 설치 하기 본문

Database/MYSQL

리눅스에 Mysql 설치 하기

Mr. YeokMaSsal 2022. 7. 28. 18:45
728x90
반응형

리눅스에 Mysql 설치 하기

  • 설치 버전 : mysql 5.7 community
  • 설치 환경 : Amazon Linux 2

Mysql 을 설치하는 방법은 2가지가 있다.

  1. RPM 설치
  2. Source Compile 설치
  3. 간단 설치하기

기본적으로 개인 개발을 위해서는 간단하게 설치를 하며 회사의 db나 프로젝트에서는 RPM 설치나 Source Compile 설치하는 형태로 진행될 것이다. 그럼 하나씩 알아보자

RPM 설치

RPM이란?

초창기 리눅스는 설치가 어려웠다 .소스코드를 갖고와서 적재적소에 컴파일을 해야했다. 그래서 일반사용자가 사용하기엔 거의 불가능했다. 이러한 이유로 외면을 받았었다. 결국 Redhat에서  RPM(Redhat Package Manager)을 내놓았다. 윈도우의 setup.exe 라고 생각하면 된다.

RPM 설치 장점

  • MySQL Repository를 설정해두면 원하는 버전을 마음대로 설
  • YUM 명령어를 통해 손쉽게 설치가 가능. 제거또한 손쉽게 가능
  • 손쉬운 버전 업그레이드.(엔진 설치만 해당)

RPM 설치 단점

  • 한가지 버전만 설치가 가능
  • 추가적으로 제공되는 기능 사용 불가능
  • 제한된 설치 옵션
  • 제한된 설치 레이아웃.(바이너리 파일을 원하는 위치에 설치 불가능)

설치 순서는 다음과 같다.

1. Download Repository

2가지 방법 중 선택하여 설치한다. (난 repo를 다운 받음)

# repo
wget http://repo.mysql.com/mysql57-community-release-el7-11.noarch.rpm


# dev
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

 

2. Install Repository

repository를 설치한다.

rpm -ivh mysql57-community-release-el7-11.noarch.rpm

 

3. repository check

download한 repository를 확인한다.

rpm -qa | grep mysql57

## mysql repository 추가 여부 확인
yum repolist enabled | grep -i "mysql.*-community.*"

## 설치가능한 mysql 버전 리스트 확인
yum repolist all | grep -i mysql

 

4. 특정버전 활성화 확인

## 사용가능한 리스트만 출력되고 맨앞에 ! 가 붙으면 사용 가능하다는 표시임
yum repolist enabled | grep mysql

 

5. 설치하기

yum install mysql-community-server

 

6. mysql start후 확인

## mysqld start
systemctl start mysqld

## mysqld 상태체크
systemctl status mysqld

 

7. root 계정 패스워드 찾기&변경

## root 패스워드 찾기
grep -i 'temporary password' /var/log/mysqld.log

## 패스워드 변경하기
mysql -uroot -p

ALTER USER 'root'@'localhost' IDENTIFIED BY 'dusqhd10djr!!QQ';

 

8. root 계정 tool에서 접속 가능하게 하기

/* 모든 IP 허용 */
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '패스워드';

/* IP 대역대 허용 */
GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.10.0.%' IDENTIFIED BY '패스워드';

/* 특정 IP 허용 */
GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.10.0.254' IDENTIFIED BY '패스워드';

/*
이 설정을 했음에도 불구하고 접근 권한 거부가 뜬다면,
firewall(방화벽)를 확인 해보자. 3306 port를 허용해줘야 한다.

방화벽 포트 확인
firewall-cmd --list-all-zones

3306 포트 허용하기
firewall-cmd --permanent --zone=public --add-port=3306/tcp
*/


flush privileges;

 

9. my.cnf 파일 설정

vi /etc/my.cnf

## timezone 변경
default-time-zone='+9:00'

## binglog 설정
log-bin=mysql_bin
server-id=1
binlog_format=ROW
expire_logs_days=7
binlog_checksum=NONE
binlog_row_image=FULL

## 캐릭터셋 변경
character-set-server=utf8
collation-server=utf8_general_ci

 

만약 캐릭터 셋 변경 전 생성된 database나 table이 있는경우

ALTER DATABASE <database_name> CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE <table_name> CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

 

 

Source Compile 설치

Source Compile 설치 장점

  • 같은 서버스펙에 설치시 기존 컴파일된 바이너리로 복사해서 사용가능
  • 편리한 MySQL 엔진 제어. (Systemd, initd, mysqld_safe등을 이용한 엔진 시작 및 종료)
  • 바이너리 파일들을 원하는 디렉토리에 배치
  • 특정 기능 미 사용시 비활성화 가능
  • RPM에서 제공하지 않는 기능을 활성화해서 사용 가능 (Profiling Code, Dtrace, Archive Storage, Black Hole Storage 등)
  • 컴퓨터 아키텍처에 맞게 소스가 빌드되기 때문에 추가적인 성능을 제공

Source Compile 설치 단점

  • 종속 패키지 설치의 어려움.같은 역할을 하지만 리눅스 배포판별 패키지 이름이 다름
  • 오픈소스 빌드 경험이 있어야 쉽게 접근이 가능(Apahce, Nginx, PHP등)

설치 순서는 다음과 같다.

1. 유저 생성

groupadd mysql
useradd -r -g mysql -s /bin/false mysql

 

2. 의존성 패키지들 설치

yum install cmake make autoconf openssl openssl-devel ncurses ncurses-devel perl bison automake binutils flex gcc gcc-c++ gettext libtool patch pkgconfig rpm-build rpm-sign

 

3. mysql 설치

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20.tar.gz
tar xvfz mysql-5.7.20.tar.gz
cd mysql-5.7.20

 

4. mysql 컴파일

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DSYSCONFDIR=/etc \
-DWITH_BOOST=/usr/local/src/boost \
-DDOWNLOAD_BOOST=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DENABLED_PROFILING=1 \
-DWITH_CURL=system \
-DOPTIMIZER_TRACE=1 \
-DWITH_INNODB_MEMCACHED=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=bundled



make  ## 30분 정도 걸림
make install

 

5. 엔진 실행

cd /usr/local/mysql
mkdir data
chown mysql:mysql data

 

6. 초기환경 설정

##my.cnf 환경 설정.

vi /etc/my.cnf


[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.err
pid-file=/usr/local/mysql/data/mysqld.pid

 

7. 데이터베이스 생성

cd /usr/local/mysql
bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql

## 위의 명령어를 수행후 바로 아래 나오는 실행 로그에 root 암호가 나옵니다.

 

8. 데이터베이스 실행

bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &

 

9. Mysql 접속 및 root 암호 변경

mysql -u root -p
mysql> alter user 'root'@'localhost' identified by '[패스워드설정]’;

## 초기 암호 정책에 따라 대소문자,특수문자,숫자가 반드시 같이 있어야 합니다.

 

10. Mysql 서버 시작 스크립트 등록

## MySQL 후속 작업.
## MySQL 서버 시작 스크립트 등록.
## MySQL 서버를 편하게 시작 및 종료할 수 있는 스크립트를 MySQL에서 제공함.

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

## 서버 종료
/etc/init.d/mysqld stop 

## 서버 시작
/etc/init.d/mysqld start

 

 

간단하게 설치하기

1. mysql 5.7 설치

yum -y install http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
yum -y install mysql-community-server

 

2. mysql start후 확인

## mysqld start
systemctl start mysqld

## mysqld 상태체크
systemctl status mysqld

 

3. root 계정 패스워드 찾기&변경

## root 패스워드 찾기
grep -i 'temporary password' /var/log/mysqld.log

## 패스워드 변경하기
mysql -uroot -p

ALTER USER 'root'@'localhost' IDENTIFIED BY 'dusqhd10djr!!QQ';

 

4. root 계정 tool에서 접속 가능하게 하기

/* 모든 IP 허용 */
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '패스워드';

/* IP 대역대 허용 */
GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.10.0.%' IDENTIFIED BY '패스워드';

/* 특정 IP 허용 */
GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.10.0.254' IDENTIFIED BY '패스워드';

/*
이 설정을 했음에도 불구하고 접근 권한 거부가 뜬다면,
firewall(방화벽)를 확인 해보자. 3306 port를 허용해줘야 한다.

방화벽 포트 확인
firewall-cmd --list-all-zones

3306 포트 허용하기
firewall-cmd --permanent --zone=public --add-port=3306/tcp
*/


flush privileges;

 

5. my.cnf 파일 설정

vi /etc/my.cnf

## timezone 변경
default-time-zone='+9:00'

## binglog 설정
log-bin=mysql_bin
server-id=1
binlog_format=ROW
expire_logs_days=7
binlog_checksum=NONE
binlog_row_image=FULL

## 캐릭터셋 변경
character-set-server=utf8
collation-server=utf8_general_ci

 

만약 캐릭터 셋 변경 전 생성된 database나 table이 있는경우

ALTER DATABASE <database_name> CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE <table_name> CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

 

 

 

 

 

 

 

728x90

'Database > MYSQL' 카테고리의 다른 글

캐릭터 셋 바꾸는 방법  (0) 2022.07.31
SHOW PROCESSLIST  (0) 2022.07.30
Mysql Server parameter  (0) 2022.07.30
Mysql 접속, STRAT, RESTART 명령어  (0) 2022.07.28
DBeaver MYSQL 접속 오류 - Public Key Retrieval is not allowed  (0) 2021.07.19
Comments