wsl(Ubuntu)에 mariadb tar파일 설치

김규연·2025년 7월 16일
0

linux

목록 보기
12/12

💻 Ubuntu에 mariadb tar 파일일 설치

# 시스템 업데이트
sudo apt update

이런식의 에러가 뜨는데

# sources.list 편집
sudo nano /etc/apt/sources.list

# 아래 내용을 추가
deb http://mirror.kakao.com/ubuntu/ noble main restricted
deb http://mirror.kakao.com/ubuntu/ noble-updates main restricted
deb http://mirror.kakao.com/ubuntu/ noble universe
deb http://mirror.kakao.com/ubuntu/ noble-updates universe
deb http://mirror.kakao.com/ubuntu/ noble multiverse
deb http://mirror.kakao.com/ubuntu/ noble-updates multiverse
deb http://mirror.kakao.com/ubuntu/ noble-backports main restricted universe multiverse

그다음 ctrl+x, y, enter 하면 변경 내용이 저장된다.
이후 다시 sudo apt update 하면 오류가 사라진걸 확인할 수 있다.

1. 파일을 WSL로 복사

Windows의 C:\ 드라이브는 wsl에서 /mnt/c/ 로 접근 가능하다.

# Windows 경로에서 WSL로 파일 복사
cp /mnt/c/Users/사용자/Downloads/mariadb-10.5.9-linux-systemd-x86_64.tar.gz ~/

2. MariaDB 사용자 및 그룹 생성

# mysql 사용자 및 그룹 생성
sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql

3. MariaDB 압축 해제 및 설치

# 압축해제
cd ~
tar -xzf mariadb-10.5.9-linux-systemd-x86_64.tar.gz

# /usr/local로 이동
sudo mv mariadb-10.5.9-linux-systemd-x86_64 /usr/local/mysql

# 소유권 변경
sudo chown -R mysql:mysql /usr/local/mysql

4. 데이터 디렉토리 설정

# 데이터 디렉토리 생성
sudo mkdir -p /var/lib/mysql
sudo chown mysql:mysql /var/lib/mysql
sudo chmod 750 /var/lib/mysql

5. MariaDB 초기화

# PATH에 MariaDB 추가
echo 'export PATH=/usr/local/mysql/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

# 데이터베이스 초기화
sudo /usr/local/mysql/scripts/mysql_install_db \
    --user=mysql \
    --basedir=/usr/local/mysql \
    --datadir=/var/lib/mysql

6. 설정 파일 생성

# mysql 설정 디렉토리 생성
sudo mkdir -p /etc/mysql

# my.cnf 파일 생성
sudo nano /etc/mysql/my.cnf

# 해당 내용 입력
[mysqld]
basedir = /usr/local/mysql
datadir = /var/lib/mysql
socket = /var/run/mysqld/mysqld.sock
pid-file = /var/run/mysqld/mysqld.pid
user = mysql
port = 3306

[mysql]
socket = /var/run/mysqld/mysqld.sock

[client]
socket = /var/run/mysqld/mysqld.sock

ctrl+x, y, enter를 눌러 변경 내용이 저장한다.

7. 소켓 디렉토리 생성

sudo mkdir -p /var/run/mysqld
sudo chown mysql:mysql /var/run/mysqld

8. 서비스로 등록

systemd 서비스 파일을 생성하여 자동 시작되도록 설정할 수 있다.

sudo nano /etc/systemd/system/mariadb.service

# 다음 내용을 입력
[Unit]
Description=MariaDB database server
After=network.target

[Service]
Type=notify
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/mysql/my.cnf
KillMode=process
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

9. 서비스 활성화

sudo systemctl daemon-reload
sudo systemctl enable mariadb
sudo systemctl start mariadb

❗ 첫번째 오류

journalctl -xeu mariadb.service

해당 명령어를 입력하면 다음과 같이 로그가 뜬다. 로그의 오류들을 살펴보면

libaio1 라이브러리가 없어서 발생하는 문제이다. libaio1dmf 설치해보자.

sudo apt update
sudo apt install libaio1

libaio1 설치 중 이런 오류가 났다. Ubuntu 24.04에서는 libaio1이 기본 저장소에서 제거되었기 때문에 오류가 나는 거 같다. libaio1을 수동 설치 해주자.

wget http://archive.ubuntu.com/ubuntu/pool/main/liba/libaio/libaio1_0.3.112-5_amd64.deb
sudo dpkg -i libaio1_0.3.112-5_amd64.deb

libaio1 관련 오류는 해결됐지만 다른 오류가 나온다.

❗ 두번째 오류

MariaDB가 라이브러리 문제 없이 실행까지는 시도했지만, 이제는 시스템 테이블이 없어 실행 도중 중단되고 있다고 뜬다. 이는 MariaDB가 처음 설치되고 실행되기 전에 초기 데이터 디렉토리 설정(init) 작업이 안 되었기 때문이다.

해결방법: MariaDB 초기화

1. 먼저 데이터 디렉토리 확인

MariaDB가 사용하는 디렉토리는 보통 /var/lib/mysql이다. 비어 있거나 초기화되지 않은 상태라면 initialize 작업이 필요하다.

sudo rm -rf /var/lib/mysql/*

위 명령은 데이터 손실을 일으킬 수 있다. 새로 설치한 경우에만 사용해야 한다.

2. 초기화 실행 (MariaDB 10.5 방식)

sudo /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/var/lib/mysql

--basedir: MariaDB가 설치된 경로 (tar.gz 압축 해제한 디렉토리)
--datadir: MariaDB 데이터 저장 경로

3. 권한 재설정 (보통 필요함)

sudo chown -R mysql:mysql /var/lib/mysql

4. 서비스 재시작

sudo systemctl restart mariadb

❗ 세번째 오류

mariadb 버전을 확인하기 위해 버전 확인 명령어를 쳤는데 다음과 같은 오류가 났다. 이 오류는 MariaDB가 libncurses.so.5를 찾지 못해서 발생하는 문제이다. Ubuntu 22.04+에서는 libncurses.so.6만 있고 libncurses.so.5는 없기 때문이다.

심볼릭 링크를 생성해서 해당 문제를 해결해 보자.

ls -l /lib/*/libncurses* /usr/lib/*/libncurses* /lib/libncurses* /usr/lib/libncurses*
ls -l /lib/*/libtinfo* /usr/lib/*/libtinfo* /lib/libtinfo* /usr/lib/libtinfo*

sudo ln -s /lib/x86_64-linux-gnu/libncursesw.so.6.4 /lib/x86_64-linux-gnu/libncurses.so.5
sudo ln -s /lib/x86_64-linux-gnu/libtinfo.so.6.4 /lib/x86_64-linux-gnu/libtinfo.so.5

❗ 네번쩨 오류


이 오류는 MariaDB/MySQL 서버가 시작할 때 Unix 소켓에 바인딩하지 못해서 발생하는 문제다. 원인은 다른 MySQL 프로세스가 이미 실행 중이거나 소켓 파일에 문제가 있을 때 발생한다.

1. 실행 중인 MySQL/MariaDB 프로세스 확인

sudo ps aux | grep mysql
sudo ps aux | grep mariadb

2. 실행 중인 프로세스가 있다면 종료

sudo pkill mysql
sudo pkill mariadb

3. 소켓 파일 확인 및 제거

# 소켓 파일 위치 확인
sudo find /var/run -name "*.sock" | grep mysql
sudo find /tmp -name "*.sock" | grep mysql

# 소켓 파일 삭제 (일반적인 위치들)
sudo rm -f /var/run/mysqld/mysqld.sock
sudo rm -f /tmp/mysql.sock
sudo rm -f /var/lib/mysql/mysql.sock

4. MySQL 디렉토리 권한 확인

sudo chown -R mysql:mysql /var/lib/mysql

5. 런 디렉토리 생성 (필요한 경우)

sudo mkdir -p /var/run/mysqld
sudo chown mysql:mysql /var/run/mysqld

6. MariaDB 서비스 재시작

sudo systemctl restart mariadb
sudo systemctl status mariadb
profile
오늘도 뚠뚠 개미 개발자

0개의 댓글