리눅스 시스템에 MySQL 데이터베이스 서버 설치 및 설정

이 문서는 리눅스 운영 체제에 MySQL 데이터베이스 서버를 설치하고 초기 설정하는 과정을 안내합니다. MySQL은 웹 애플리케이션 개발에서 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)으로, 효율적인 데이터 저장 및 관리를 제공합니다. 본 가이드에서는 MySQL 커뮤니티 서버 아카이브를 사용하여 직접 설치하는 방법과 기본적인 데이터베이스 구성, 그리고 원격 접근 도구인 Navicat을 통한 연결 방법을 다룹니다.

참고: 이 과정에는 시스템 관리자(root) 권한 또는 sudo 권한이 필요합니다.

1. MySQL 설치 파일 다운로드

먼저 MySQL 공식 웹사이트에서 커뮤니티 서버 버전을 다운로드해야 합니다. 안정적인 특정 버전을 선호한다면 'Archives' 섹션에서 이전 버전을 선택할 수 있습니다. 예를 들어, mysql-8.2.0-linux-x86_64.tar.xz와 같은 파일을 다운로드합니다. 이 압축 파일은 MySQL 서버의 바이너리 배포판을 포함합니다.

# 다운로드 디렉토리로 이동 (예시)
cd ~/Downloads/

# 다운로드된 파일 확인
ls
# 예시 출력: mysql-8.2.0-linux-x86_64.tar.xz

2. MySQL 서버 설치

2.1. 압축 해제 및 디렉토리 이동

다운로드한 .tar.xz 파일을 해제하고, 설치 디렉토리의 이름을 짧고 관리하기 쉽게 변경한 후, 시스템의 적절한 위치로 옮깁니다. 이 가이드에서는 /opt/mysql 경로에 설치하는 것을 기준으로 합니다.

# 다운로드된 디렉토리에서 압축 해제
tar -xvf mysql-8.2.0-linux-x86_64.tar.xz

# 압축 해제된 디렉토리 이름 변경 (관리 편의성을 위함)
mv mysql-8.2.0-linux-x86_64 mysql_server

# MySQL 서버 디렉토리를 /opt/mysql/ 경로로 복사 (root 권한 필요)
sudo cp -r mysql_server/ /opt/mysql/

# 설치 경로 확인
ls /opt/
# 예시 출력: mysql/ ...

2.2. MySQL 사용자 및 그룹 설정

MySQL 서비스는 보안을 위해 전용 시스템 사용자 계정으로 실행하는 것이 좋습니다. 새로운 그룹과 사용자를 생성하고, MySQL 설치 디렉토리의 소유권을 변경합니다.

# 'mysqlgroup' 그룹 생성
sudo groupadd mysqlgroup

# 'mysqluser' 사용자 생성 및 'mysqlgroup'에 추가 (시스템 계정으로 생성)
sudo useradd -r -g mysqlgroup mysqluser

# /opt/mysql 디렉토리의 소유권을 'mysqluser:mysqlgroup'으로 변경
sudo chown -R mysqluser:mysqlgroup /opt/mysql/

2.3. MySQL 구성 파일 생성

MySQL의 동작 방식을 정의하는 설정 파일(my.cnf)을 생성해야 합니다. 이 파일은 MySQL 서버의 기본 경로, 데이터 저장 경로, 소켓 파일 경로, 포트 번호 등을 지정합니다. 이 가이드에서는 /etc/my.cnf 파일을 사용합니다.

# /etc/my.cnf 파일 생성 및 편집
sudo vi /etc/my.cnf

다음 내용을 my.cnf 파일에 붙여넣습니다. 포트 번호는 기본값 3306 대신 3307을 사용했습니다.

[mysqld]
basedir = /opt/mysql
datadir = /opt/mysql/data
socket = /opt/mysql/mysql.sock
character-set-server=utf8mb4
port = 3307
explicit_defaults_for_timestamp = 1

[client]
socket = /opt/mysql/mysql.sock
default-character-set=utf8mb4
port = 3307

vi 편집기에서 Esc를 누른 후 :wq를 입력하여 저장하고 종료합니다.

2.4. MySQL 데이터 디렉토리 초기화

MySQL 서버를 처음 시작하기 전에 데이터 디렉토리를 초기화해야 합니다. 이 과정에서 필요한 시스템 데이터베이스와 루트 계정이 생성됩니다. 초기화 중 생성되는 임시 비밀번호는 나중에 MySQL에 접속할 때 사용되므로 반드시 기록해 두십시오.

# MySQL 바이너리 디렉토리로 이동
cd /opt/mysql/bin/

# 데이터 디렉토리 초기화
sudo ./mysqld --user=mysqluser --basedir=/opt/mysql --datadir=/opt/mysql/data --initialize

명령어 실행 후 터미널에 출력되는 내용 중 임시 비밀번호를 찾아 기록합니다. 보통 root@localhost: 뒤에 오는 문자열입니다.

2.5. MySQL 서비스 시작

이제 MySQL 서버를 시작할 수 있습니다. support-files 디렉토리 안에 있는 mysql.server 스크립트를 사용하여 서비스를 시작합니다.

# MySQL support-files 디렉토리로 이동
cd /opt/mysql/support-files/

# MySQL 서비스 시작
sudo ./mysql.server start

서비스가 성공적으로 시작되면, MySQL 클라이언트를 사용하여 데이터베이스에 접속할 수 있습니다.

# MySQL 클라이언트 실행 (bin 디렉토리에 위치)
/opt/mysql/bin/mysql -u root -p

프롬프트가 나타나면 초기화 단계에서 얻은 임시 비밀번호를 입력합니다. 성공적으로 접속되면 MySQL 셸 프롬프트(mysql>)가 나타납니다.

3. MySQL 추가 설정 및 관리

3.1. 환경 변수 등록

MySQL 실행 파일을 매번 전체 경로로 입력하는 불편함을 없애기 위해 환경 변수에 등록할 수 있습니다. 주로 ~/.bashrc 또는 ~/.zshrc 파일에 다음 내용을 추가합니다.

# Bash 또는 Zsh 사용자의 경우:
echo 'export PATH=$PATH:/opt/mysql/bin' >> ~/.bashrc
source ~/.bashrc

# 현재 세션에 적용
export PATH=$PATH:/opt/mysql/bin

이제 터미널을 다시 시작하거나 source ~/.bashrc (또는 .zshrc) 명령어를 실행하면 mysql 또는 mysqld 명령어를 직접 사용할 수 있습니다.

3.2. 루트 비밀번호 변경

초기 생성된 임시 비밀번호는 기억하기 어렵고 보안에 취약하므로, 즉시 새로운 비밀번호로 변경하는 것이 좋습니다.

# MySQL 클라이언트로 접속
mysql -u root -p
# (이전 임시 비밀번호 입력)
-- 새로운 비밀번호로 변경 (예시: 'MySecureDBPass2024!')
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MySecureDBPass2024!';
FLUSH PRIVILEGES; -- 권한 변경 사항 적용

3.3. MySQL 서비스 제어 함수 (선택 사항)

MySQL 서비스를 쉽게 시작하고 중지할 수 있도록 셸 함수를 정의할 수 있습니다. .bashrc.zshrc 파일에 다음 함수를 추가합니다.

# MySQL 서비스 시작 함수
function start_mysql_server() {
    sudo /opt/mysql/support-files/mysql.server start
    echo "MySQL 서비스가 시작되었습니다."
}

# MySQL 서비스 중지 함수
function stop_mysql_server() {
    sudo /opt/mysql/support-files/mysql.server stop
    echo "MySQL 서비스가 중지되었습니다."
}

이제 터미널에서 start_mysql_server 또는 stop_mysql_server 명령어를 사용하여 서비스를 제어할 수 있습니다.

3.4. Navicat을 이용한 접속

Navicat과 같은 GUI 기반 데이터베이스 관리 도구를 사용하면 MySQL 데이터베이스를 시각적으로 쉽게 관리할 수 있습니다. Navicat에서 새 연결을 생성할 때 다음과 같은 정보를 사용합니다.

  • 연결 이름: 원하는 이름 (예: MyLocalMySQL)
  • 호스트 이름/IP 주소: 127.0.0.1 (localhost 대신 IP 주소를 사용하는 것이 좋습니다.)
  • 포트: 3307 (my.cnf에서 설정한 포트)
  • 사용자 이름: root
  • 비밀번호: 방금 변경한 새로운 비밀번호 (예: MySecureDBPass2024!)

성공적으로 연결되면 Navicat 인터페이스를 통해 데이터베이스를 생성하고, 테이블을 관리하며, 데이터를 쿼리할 수 있습니다.

태그: MySQL linux Database RDBMS cli

7월 15일 21:42에 게시됨