Rocky Linux 9에 MySQL 5.7 설치 방법

Rocky Linux 9.2에서 MySQL 5.7 버전을 사용하려면 MySQL 8.0용 Repository를 삭제하고, MySQL 5.7용 Repository를 추가한 후, MySQL 서버를 설치하고 구성해야 합니다. 이 과정을 알아보고 쉽게 따라할 수 있습니다.
인프라코디
Rocky Linux 9에 MySQL 5.7 설치 방법

Rocky Linux는 CentOS의 후속 버전으로, 커뮤니티 기반의 엔터프라이즈 리눅스 배포판입니다. Rocky Linux는 안정성과 호환성을 중시하며, 다양한 서버 환경에서 사용할 수 있습니다.

Rocky Linux의 기본 데이터베이스는 MariaDB이고 MySQL 8.0 버전을 설치할 수 있지만, 상황에 따라 MySQL 하위 버전이 필요한 경우가 있습니다. 2024년 6월 30일에 지원 만료되는 CentOS 7을 Rocky Linux 9로 업그레이드하고, MySQL은 동일 버전으로 마이그레이션 하기 위해 테스트를 진행했습니다.

이 글에서는 Rocky Linux 9.2에서 MySQL 5.7을 설치하는 방법을 알아보고, 실습을 통해 쉽게 설치할 수 있습니다.

환경 정보

  • 작업일 : 2023년 08월 14일
  • 운영 체제 : Rocky Linux 9.2
  • 로그인 계정 : root
  • MySQL 설치 버전 : mysql-community-server-5.7.43-1.el7.x86_64
  • SSH 접속 및 외부 인터넷이 가능한 네트워크 구성

리눅스 패키지 업데이트하기

Rocky Linux 9.2 버전 리눅스의 패키지들을 최신화 하기 위해 업데이트 작업을 진행합니다.

dnf -y update

MySQL 5.7 저장소 추가하기

Rocky Linux 9.2는 기본적으로 MySQL 8을 지원합니다. MySQL 5.7을 사용하고 싶다면, MySQL 공식 저장소를 추가해야 합니다.

서버에 SSH로 접속 후 다음 명령어로 MySQL 저장소 패키지를 다운로드합니다. MySQL 5.7 버전이 포함된 가장 최근의 Repository 설치 패키지는 mysql80-community-release-el7-9.noarch.rpm 입니다.

아래와 같이 2가지 방법으로 설치할 수 있습니다.

MySQL Repository 설치 패키지 다운로드 후 설치하기

wget https://dev.mysql.com/get/mysql80-community-release-el7-9.noarch.rpm

다운로드가 완료되면, 다음 명령어로 패키지를 설치합니다.

rpm -ivh mysql80-community-release-el7-9.noarch.rpm

MySQL Repository 설치 패키지 URL로 설치하기

dnf 명령어로 패키지 주소를 입력하여 설치합니다.

dnf -y install https://dev.mysql.com/get/mysql80-community-release-el7-9.noarch.rpm
[root@infracody.com ~]# dnf -y install https://dev.mysql.com/get/mysql80-community-release-el7-9.noarch.rpm Last metadata expiration check: 3:10:21 ago on Mon 14 Aug 2023 11:18:34 AM KST. mysql80-community-release-el7-9.noarch.rpm 15 kB/s | 11 kB 00:00 Dependencies resolved. ====================================================================================================================================================================================================================================== Package Architecture Version Repository Size ====================================================================================================================================================================================================================================== Installing: mysql80-community-release noarch el7-9 @commandline 11 k Transaction Summary ====================================================================================================================================================================================================================================== Install 1 Package Total size: 11 k Installed size: 12 k Downloading Packages: Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : mysql80-community-release-el7-9.noarch 1/1 Verifying : mysql80-community-release-el7-9.noarch 1/1 Installed: mysql80-community-release-el7-9.noarch Complete!

설치가 완료되면, 다음 명령어로 MySQL 8 저장소를 비활성화하고, MySQL 5.7 저장소를 활성화합니다.

dnf config-manager --disable mysql80-community
dnf config-manager --enable mysql57-community

다음 명령어를 실행하여 MySQL 5.7 저장소가 추가되었는지 확인합니다.

dnf repolist
[root@infracody.com ~]# dnf repolist repo id repo name appstream Rocky Linux 9 - AppStream baseos Rocky Linux 9 - BaseOS crb Rocky Linux 9 - CRB epel Extra Packages for Enterprise Linux 9 - x86_64 epel-next Extra Packages for Enterprise Linux 9 - Next - x86_64 extras Rocky Linux 9 - Extras mysql-connectors-community MySQL Connectors Community mysql-tools-community MySQL Tools Community mysql57-community MySQL 5.7 Community Server

MySQL 5.7 설치하기

MySQL 5.7 저장소를 추가한 후, 다음 명령어로 MySQL 서버를 설치합니다.

dnf -y install mysql-community-server
[root@infracody.com ~]# dnf -y install mysql-community-server Last metadata expiration check: 0:00:31 ago on Mon 14 Aug 2023 02:34:58 PM KST. Dependencies resolved. ====================================================================================================================================================================================================================================== Package Architecture Version Repository Size ====================================================================================================================================================================================================================================== Installing: mysql-community-server x86_64 5.7.43-1.el7 mysql57-community 184 M Installing dependencies: mysql-community-client x86_64 5.7.43-1.el7 mysql57-community 31 M mysql-community-common x86_64 5.7.43-1.el7 mysql57-community 313 k mysql-community-libs x86_64 5.7.43-1.el7 mysql57-community 2.9 M ncurses-compat-libs x86_64 6.2-8.20210508.1.el9 epel 317 k Transaction Summary ====================================================================================================================================================================================================================================== Install 5 Packages Total download size: 219 M Installed size: 930 M Downloading Packages: (1/5): mysql-community-common-5.7.43-1.el7.x86_64.rpm 350 kB/s | 313 kB 00:00 (2/5): ncurses-compat-libs-6.2-8.20210508.1.el9.x86_64.rpm 253 kB/s | 317 kB 00:01 (3/5): mysql-community-libs-5.7.43-1.el7.x86_64.rpm 1.5 MB/s | 2.9 MB 00:01 (4/5): mysql-community-client-5.7.43-1.el7.x86_64.rpm 68 kB/s | 31 MB 07:50 (5/5): mysql-community-server-5.7.43-1.el7.x86_64.rpm 76 kB/s | 184 MB 41:22 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Total 90 kB/s | 219 MB 41:25 MySQL 5.7 Community Server 3.0 MB/s | 3.1 kB 00:00 Importing GPG key 0x3A79BD29: Userid : "MySQL Release Engineering <mysql-build@oss.oracle.com>" Fingerprint: 859B E8D7 C586 F538 430B 19C2 467B 942D 3A79 BD29 From : /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022 Key imported successfully MySQL 5.7 Community Server 1.9 MB/s | 1.9 kB 00:00 Importing GPG key 0x5072E1F5: Userid : "MySQL Release Engineering <mysql-build@oss.oracle.com>" Fingerprint: A4A9 4068 76FC BD3C 4567 70C8 8C71 8D3B 5072 E1F5 From : /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql Key imported successfully Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : mysql-community-common-5.7.43-1.el7.x86_64 1/5 Installing : mysql-community-libs-5.7.43-1.el7.x86_64 2/5 Running scriptlet: mysql-community-libs-5.7.43-1.el7.x86_64 2/5 Installing : ncurses-compat-libs-6.2-8.20210508.1.el9.x86_64 3/5 Installing : mysql-community-client-5.7.43-1.el7.x86_64 4/5 Running scriptlet: mysql-community-server-5.7.43-1.el7.x86_64 5/5 Installing : mysql-community-server-5.7.43-1.el7.x86_64 5/5 Running scriptlet: mysql-community-server-5.7.43-1.el7.x86_64 5/5 /usr/lib/tmpfiles.d/mysql.conf:23: Line references path below legacy directory /var/run/, updating /var/run/mysqld → /run/mysqld; please update the tmpfiles.d/ drop-in file accordingly. Verifying : ncurses-compat-libs-6.2-8.20210508.1.el9.x86_64 1/5 Verifying : mysql-community-client-5.7.43-1.el7.x86_64 2/5 Verifying : mysql-community-common-5.7.43-1.el7.x86_64 3/5 Verifying : mysql-community-libs-5.7.43-1.el7.x86_64 4/5 Verifying : mysql-community-server-5.7.43-1.el7.x86_64 5/5 Installed: mysql-community-client-5.7.43-1.el7.x86_64 mysql-community-common-5.7.43-1.el7.x86_64 mysql-community-libs-5.7.43-1.el7.x86_64 mysql-community-server-5.7.43-1.el7.x86_64 ncurses-compat-libs-6.2-8.20210508.1.el9.x86_64 Complete!

MySQL 초기화

--initialize-insecure 옵션을 사용하여 비밀번호가 없는 root@localhost 계정을 생성합니다.

아래 MySQL 보안 설정 단계에서 root 계정의 비밀번호를 설정합니다.

mysqld --initialize-insecure --user=mysql

MySQL 데몬 시작하기

초기화 작업 후 MySQL 데몬을 시작하고, 부팅 시 자동으로 실행하도록 설정합니다.

systemctl start mysqld
systemctl enable mysqld

다음 명령어를 실행하여 MySQL 데몬의 상태를 확인합니다.

systemctl status mysqld

이 명령어는 다음과 같은 내용을 보여줍니다.

[root@infracody.com ~]# systemctl status mysqld ● mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; preset: disabled) Active: active (running) since Mon 2023-08-14 15:36:20 KST; 3s ago Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html Process: 2528 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS) Process: 2580 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS) Main PID: 2582 (mysqld) Tasks: 27 (limit: 24648) Memory: 339.5M CPU: 2.485s CGroup: /system.slice/mysqld.service └─2582 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid Aug 14 15:36:13 test systemd[1]: Starting MySQL Server... Aug 14 15:36:15 test mysqld_pre_systemd[2552]: mysqld: Out of memory (Needed 4294967200 bytes) Aug 14 15:36:20 test systemd[1]: Started MySQL Server.

이제 MySQL 서버가 정상적으로 작동하는 것을 확인했습니다.

MySQL 보안 설정

MySQL 데몬 실행 후 보안 설정 명령을 실행합니다.

mysql_secure_installation

다음과 같이 보안 설정을 진행합니다.

[root@infracody.com ~]# mysql_secure_installation Securing the MySQL server deployment. Connecting to MySQL using a blank password. VALIDATE PASSWORD PLUGIN can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD plugin? Press y|Y for Yes, any other key for No: y # 비밀번호 확인 플러그인 사용 설정 There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2 # 숫자, 대소문자, 특수문자를 포함하여 8자 이상 설정 Please set the password for root here. New password: PASSWORD Re-enter new password: PASSWORD Estimated strength of the password: 100 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y # 위에서 입력한 비밀번호로 설정 By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : y # 익명 사용자 삭제 Success. Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y # 원격 호스트에서 root 계정 로그인 제한 Success. By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y # 테스트 데이터베이스 제거 - Dropping test database... Success. - Removing privileges on test database... Success. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y # 권한 테이블을 다시 로드하여 적용 Success. All done!

MySQL 접속하기

위에서 설정한 root 계정 비밀번호로 접속합니다.

mysql -u root -p
[root@infracody.com ~]# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.7.43 MySQL Community Server (GPL) Copyright (c) 2000, 2023, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>

MySQL 5.7.43 버전의 root 계정으로 접속된걸 확인할 수 있습니다.

만약 mysql_secure_installation 명령을 실행하지 않고 MySQL 데몬을 실행하여 접속한 경우 아래와 같이 임시 비밀번호를 확인할 수 있습니다.

grep 'temporary password' /var/log/mysqld.log
[root@infracody.com ~]# grep 'temporary password' /var/log/mysqld.log 2023-08-14T10:28:17.6+0900 [Note] [Server] A temporary password is generated for root@localhost: 7aSd!fGh2jKl

마치며

Rocky Linux 9.2에서 MySQL 5.7을 설치하고 테스트하는 방법에 대해 알아보았습니다. Rocky Linux 최신 버전에서 MySQL 5.7을 사용해야할 때 도움이 되었으면 좋겠습니다.

인프라코디
서버, 네트워크, 보안 등 IT 인프라 관리를 하는 시스템 엔지니어로 일하고 있으며, IT 기술 정보 및 일상 정보를 기록하는 블로그를 운영하고 있습니다. 글을 복사하거나 공유 시 게시하신 글에 출처를 남겨주세요.

- 블로그 : www.infracody.com

이 글이 유익했나요? 댓글로 소중한 의견을 남겨주시거나 커피 한 잔의 선물은 큰 힘이 됩니다.
댓글