MySQL8.4 LTS - data 디렉토리 변경 (Ubuntu)

data 폴더 위치를 변경해 이동한다.

  • rsync 를 사용해서 복사한다.

위치 이동

my.cnf 에 있는 기본 디렉토리를 /data 폴더로 변경하고 적용한다.

  1. 기본 data 디레토리 확인

my.cnf 에서 datadir 로 지정된 항목을 찾아 보자.

1
2
~$ grep datadir /etc/mysql/mysql.conf.d/mysqld.conf
/etc/mysql/mysql.conf.d//mysqld.conf:#datadir = /var/lib/mysql

기본으로 Ubuntu 종류에서는 /var/lib/mysql 를 기본 데이터 디렉토리로 지정하고 있다.

  1. data 디렉토리를 /data/mysql 로 변경한다.

mysqld.conf 를 수정해서 /data로 변경하자

1
2
3
4
5
[mysqld]
#datadir = /var/lib/mysql
socket = /data/mysql/mysqld.sock
datadir = /data/mysql
log-error = /var/log/mysql/error.log

mysql.conf

1
2
[client]
socket = /data/mysql/mysqld.sock
  1. data 폴더 권한

mysqld / mariadbd 데몬은 mysql 사용자, mysql 그룹으로 사용권이 실행되고 있다. 데이터베이스에서 접근하는 모든 자원(폴더, 파일, 로그 등등)은 mysql 사용자로 접근이 가는해야 한다. 그래서 /data 디렉토리 권한을 변경한다.

mysql 사용자와 그룹 확인한다.

1
2
3
4
5
$ grep mysql /etc/passwd
mysql:x:111:117:MySQL Server,,,:/nonexistent:/bin/false

$ grep mysql /etc/group
mysql:x:117:

소유권을 mysql 사용자로 변경한다.

1
2
3
4
5
$ sudo chown -R mysql:mysql /data/mysql
[sudo] 암호:
$ ls -al /data/mysql
drwxr-xr-x 3 mysql mysql 4096 5월 6 22:35 .
drwxr-xr-x 20 root root 4096 5월 6 17:15 ..
  1. data 이동

rsync 를 사용해서 /var/lib/mysql 데이터를 /data 아래로 복사한다.

1
$ sudo rsync -avzph /var/lib/mysql/ /data/mysql/
  1. apparmor 변경

Ubuntu 24.04 는 apparmor 를 실행하고 있다. mysql 관련 권한을 지정해 주어야 한다.

1
2
3
4
5
# Allow data dir access
# /var/lib/mysql/ r,
# /var/lib/mysql/** rwk,
/data/mysql/ r,
/data/mysql/** rwk,
1
$ sudo systemctl restart apparmor
  1. mysqld 데몬을 재시작하고 확인한다.
1
2
3
4
$ sudo systemctl restart mysql
$ sudo systemctl status mysql

● mariadb.service - MariaDB 10.11.2 database server

데이터베이스에 접속해 데이터를 확인해 보자. @@datadir 환경변수를 출력해서 /data 가 출력되면 my.cnf 의 설정이 잘 구성된 상태를 확인할 수 있다.

1
2
3
4
5
6
7
8
$ sudo mysql -u root -p

> select @@datadir;
+-----------+
| @@datadir |
+-----------+
| /data/ |
+-----------+

rsync 로 복사한 실제 데이터들은 각 스키마에서 확인해 보자.

mysql client 접속시 다음 에러가 발생해


ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)


사용자와 bind

1
2
[mysqld]
bind-address = 0.0.0.0

mysql>
mysql> create user ‘root‘@’%’ identified by ‘rkdxo!0615’;
Query OK, 0 rows affected (0.36 sec)

mysql> grant privileges on . to ‘root‘@’%’;
ERROR 1149 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use
mysql> grant all privileges on . to ‘root‘@’%’;
Query OK, 0 rows affected (0.11 sec)

mysql>
mysql>
mysql> flush privileges;

Ubuntu 개발사 캐노니컬(Canonical)에서 개발한 패키지 관리 시스템으로, 샌드박스 형태로 애플리케이션을 설치하고 관리할 수 있습니다.

snap 설치 확인
Ubuntu 16.04 이상 버전에는 기본적으로 설치되어 있지만, 설치 여부를 확인하려면 다음 명령어를 실행하세요:

1
snap --version

Snap 패키지 검색

원하는 패키지를 검색할 때는 다음 명령어를 사용합니다:

1
snap find [패키지 이름]

예:

1
snap find vscode

Snap 패키지 설치

특정 패키지를 설치하려면 다음과 같이 입력하세요:

1
sudo snap install [패키지 이름]

예:

1
sudo snap install vscode

Snap 패키지 업데이트

모든 snap 패키지를 업데이트하려면 다음 명령어를 사용합니다:

1
sudo snap refresh

특정 패키지만 업데이트하고 싶다면:

1
sudo snap refresh [패키지 이름]

설치된 Snap 패키지 목록 확인
설치된 snap 패키지를 확인하려면:
복사
snap list
Snap 패키지 제거
패키지를 제거하려면 다음 명령어를 사용합니다:
복사
sudo snap remove [패키지 이름]
Snap 서비스 관리
만약 설치된 snap 패키지가 서비스라면, 이를 시작/중지할 수 있습니다.
복사
sudo snap start [패키지 이름]
sudo snap stop [패키지 이름]
유용한 Snap 옵션
–classic: 일부 패키지는 –classic 옵션을 요구할 수 있습니다. 이는 시스템 파일에 더 많은 접근을 허용하는 설정입니다. 예: sudo snap install [패키지 이름] –classic
–channel: 특정 버전이나 안정성을 지정하여 설치할 수 있습니다. 예: sudo snap install [패키지 이름] –channel=edge
snap을 사용하면 다양한 소프트웨어를 안전하고 효율적으로 설치하고 관리할 수 있습니다!