MySQL

[MySQL] yum으로 MySQL 설치 (CentOS 9)

meegu 2024. 9. 4. 23:14

 

VMware CentOS9 사용!


1. Yum 리포지토리 설치용 MySQL 다운로드 링크 확인

1-1. 하기 링크 접속

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

 

MySQL :: Download MySQL Yum Repository

Support EOL for Fedora 38 Per the MySQL Support Lifecycle policy regarding ending support for OS versions that have reached end of life, we plan to discontinue building all MySQL binaries for the Fedora 38 platform as of May 21, 2024. See Fedora 38 End of

dev.mysql.com

링크 접속 시 출력 화면

 

1-2. CentOS9에 설치할 예정이므로, 첫 번째 DownLoad 클릭

(*OS버전에 따라 링크가 다르게 구성 되어있으므로 잘 확인)

1-3. 아래 "No Thanks, just start my download."에서 마우스 우클릭 > [링크 주소 복사]

 

2. MySQL 레포지토리 RPM 파일 설치 (wget vs yum install)

MySQL은 yum으로 직접 설치가 불가능하기 때문에 mysql-community-release 패키지를 설치해

먼저 MySQL 저장소를 추가해야 함. (*이유는 하기 참조)

  • Yum의 기본 작동 방식:
    • yum은 기본적으로 시스템에 설정된 저장소에서 패키지를 찾음
    • 예를 들어, yum install package-name 명령을 실행하면, yum은 설정된 저장소에서 package-name을 찾아 다운로드하고
      설치하는 방식
  • MySQL 설치와 관련된 문제:
    • MySQL은 오픈 소스 데이터베이스이지만, Red Hat 계열의 배포판(CentOS 등)에서는 기본적으로 제공되지 않는 경우가 많음 → 기본적으로 MariaDB 를 포함
    • 따라서, CentOS의 기본 저장소에는 MySQL이 포함되어 있지 않기 때문에 yum install mysql-server와 같은 명령어로
      MySQL을 설치하려 하면, MySQL 대신 MariaDB가 설치되거나 설치할 수 없다는 오류가 발생
  • 요약: 
    • 1. yum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm 명령어를 사용해
      MySQL 저장소를 추가
    • 2. 이후 yum install mysql-server 명령어로 MySQL을 설치
    • 최종요약 :  기본 저장소에 없는 패키지는 먼저 해당 패키지를 포함하는 저장소를 추가해야 설치할 수 있음

 

2-1.아래와 같은 명령어로 실행

( -y : 설치시 나타나는 모든 물음에 yes를 사용하겠다는 옵션값으로 입력시 추가 입력 없이 설치 가능)

sudo yum install https://dev.mysql.com/get/mysql84-community-release-el9-1.noarch.rpm

 

이 과정에서 

wget을 사용하면 안되나? 라는 의문이 들었다. (*하기 참조)


 
yum install과 wget의 차이점:

wget:

  • 목적: wget은 주로 파일을 인터넷에서 다운로드할 때 사용하는 명령어로,
            특정 URL에서 파일을 다운로드해 로컬 시스템에 저장하는 것이 주 역할
  • 사용 예: wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
  • 결과: MySQL 레포지토리 RPM 파일을 로컬 시스템에 다운로드하지만, 파일이 단순히 다운로드될 뿐, 설치되지는 않음.
yum install:
  • 목적: yum install은 특정 패키지를 설치하는 명령어로, 패키지를 다운로드하고 설치하는 과정을 자동으로 처리.
             또한, 패키지 설치 시 필요한 종속성(dependencies)을 자동으로 해결
  • 사용 예: yum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
  • 결과: MySQL 레포지토리 RPM 파일을 다운로드하고, 해당 파일을 시스템에 설치.
            설치된 RPM 파일은 MySQL 레포지토리를 시스템에 추가하고,
            이후 yum을 통해 MySQL 관련 패키지를 설치할 수 있도록 설정함.
yum install을 사용하는 이유:
  1. 자동 설치: yum install은 파일을 다운로드한 후 자동으로 설치까지 진행하므로 사용자가 따로 추가 작업을 할 필요가 없음.
                    wget으로 파일을 다운로드 한다면  별도로 rpm -ivh 등의 명령어로 설치해야 함.
  2. 종속성 관리: yum은 설치하려는 패키지가 다른 패키지에 의존하는 경우 이를 자동으로 확인하고 필요한 패키지들을 함께 설치.
                       반면 wget은 단순히 파일만 다운로드 하므로 종속성 관리를 직접해야 함.
  3. 패키지 관리: yum install을 통해 설치한 패키지는 시스템의 패키지 관리 도구에 의해 관리됨.
                       즉, 이후 패키지 업데이트, 제거 등이 쉽게 가능.

 

2-2. yum --showduplicates list 명령으로 설치 가능한 모든 버전 확인 가능

 

 

3. MySQL 설치

3-1 위에서 가장 최신 버전을 확인하고 아래 명령어를 통해 설치해줌

(패치 더 된 버전 받으면 좋겠지만 연습이니까 ㄱㅊ^^)

sudo yum -y install mysql-community-server-8.4.2

중략

아무튼 컴플릿 했다는 사진

 

3-2. mysqladmin --version, mysql -V 명령어로 mysql 버전을 확인할 수 있음

 

 

4. MySQL 서버 시작 및 접속

처음부터 MySQL을 수동으로 설치하거나 특정 설정으로 초기화가 필요할 때는

(위에서 언급한 wget으로 리포지토리를 설치한 후에 MySQL을 설치한 경우 등)

mysqld --initialize 또는 mysqld --initialize-insecure 명령어를 실행해 데이터 디렉토리와 시스템 테이블을 준비해야 함

mysqld --default-file=/etc/my.cnf
mysqld --initialize : 비밀번호를 가진 관리자 계정을 생성 (비번은 에러 로그 파일로 기록)
mysqld --initialize-insecure : 비밀번호가 없는 관리자 계정을 생성

 

4-1. 하기 명령어를 통해 서버를 시작

systemctl start mysqld

 

4-2. 하기 명령어를 통해 서버 상태 확인

systemctl status mysqld

 

Active: active (running)  / Status: "Server is operational" 으로 서버는 정상적으로 동작중

 

4-2-1. 재부팅시 MySQL 서버가 자동 시작되도록 설정

systemctl enable mysqld

 

명령어로 가능하지만 이미

Loaded: loaded (...; enabled; ...)  : 부팅시 자동 시작으로 되어있음

 

4-3. 서버 연결 테스트 (서버에 접속하기)

 

4-3-1.서버에 접속하기 위해 root계정 비밀번호 확인

sudo grep 'temporary password' /var/log/mysqld.log

root@localhost : vSpuE2qk5/&1

 

4-3-2. 하기 명령행 인자를 통해 접속

* 여러 가지 형태의 명령행 인자를 통해 접속을 시도할 수 있음. 해당 게시글 최하단에 이어서..

mysql -uroot -p

비밀번호를 변경해야 함

 

5. root 계정 비밀번호 변경

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Mysqlserver123!!!';

 

IDENTIFIED BY 뒤에 변경할 비밀번호 입력

 

 

exit 로 접속 종료

여기까지 기본적인 설치는 마무리!


 

6. MySQL 서버 종료

systemctl stop mysqld


# 원격으로 셧다운하는 경우
mysql> SHUTDOWN;

 

MySQL 서버가 종료될 때 모든 커밋된 내용을 데이터 파일에 기록하고 종료하기

mysql> SET GLOBAL innodb_fast_shutdown=0;
linux> systemctl stop mysqld // mysql> SHUTDOWN;

 

innodb_fast_shutdown=0 : 빠른 종료 비활성화.

                                           이 경우 InnoDB는 모든 트랜잭션 로그를 정리하고, 필요한 모든 작업을 수행한 후에 종료.

 

추가1. 여러 가지 형태의 명령행 인자를 통해 접속

mysql -uroot -p --host=127.0.0.1 --port=3306

 

MySQL 서버가 로컬에 있다는 것을 의미하지만, TCP/IP 프로토콜을 통해 연결

원격 호스트에 있는 MySQL 서버에 접속할 때는 mysql -uroot -p --host=<IP주소> --port=<포트번호> 형태로만 접속 가능

추가2. 원격 서버에서 MySQL 서버의 접속 가능 여부만 확인

커넥션이 가능한지만 확인하는 경우 하기 명령을 통해 원격지 MySQL 서버가 응답 가능한 상태인지 확인할 수 있음

 

1. Telnet 프로그램으로 확인

sudo dnf install telnet

 

 

설치하고

 

telnet 10.2.40.61 3306

 

2. Netcat(nc) 프로그램으로 확인