MySQL8.4 LTS - data 디렉토리 변경 (Ubuntu)
data 폴더 위치를 변경해 이동한다.
- rsync 를 사용해서 복사한다.
위치 이동
my.cnf 에 있는 기본 디렉토리를 /data 폴더로 변경하고 적용한다.
- 기본 data 디레토리 확인
my.cnf 에서 datadir 로 지정된 항목을 찾아 보자.
1 | grep datadir /etc/mysql/mysql.conf.d/mysqld.conf |
기본으로 Ubuntu 종류에서는 /var/lib/mysql 를 기본 데이터 디렉토리로 지정하고 있다.
- data 디렉토리를 /data/mysql 로 변경한다.
mysqld.conf 를 수정해서 /data로 변경하자
1 | [mysqld] |
mysql.conf
1 | [client] |
- data 폴더 권한
mysqld / mariadbd 데몬은 mysql 사용자, mysql 그룹으로 사용권이 실행되고 있다. 데이터베이스에서 접근하는 모든 자원(폴더, 파일, 로그 등등)은 mysql 사용자로 접근이 가는해야 한다. 그래서 /data 디렉토리 권한을 변경한다.
mysql 사용자와 그룹 확인한다.
1 | grep mysql /etc/passwd |
소유권을 mysql 사용자로 변경한다.
1 | sudo chown -R mysql:mysql /data/mysql |
- data 이동
rsync 를 사용해서 /var/lib/mysql 데이터를 /data 아래로 복사한다.
1 | sudo rsync -avzph /var/lib/mysql/ /data/mysql/ |
- apparmor 변경
Ubuntu 24.04 는 apparmor 를 실행하고 있다. mysql 관련 권한을 지정해 주어야 한다.
1 | # Allow data dir access |
1 | sudo systemctl restart apparmor |
- mysqld 데몬을 재시작하고 확인한다.
1 | sudo systemctl restart mysql |
데이터베이스에 접속해 데이터를 확인해 보자. @@datadir 환경변수를 출력해서 /data 가 출력되면 my.cnf 의 설정이 잘 구성된 상태를 확인할 수 있다.
1 | $ sudo mysql -u root -p |
rsync 로 복사한 실제 데이터들은 각 스키마에서 확인해 보자.
mysql client 접속시 다음 에러가 발생해
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)
사용자와 bind
1 | [mysqld] |
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;
MySQL8.4 LTS - data 디렉토리 변경 (Ubuntu)
https://thinkbee.github.io/mysql8-install-datadir-8e465f35d820/