MySQL의 다른 데이터베이스 위치

MySQL의 다른 데이터베이스 위치

루트 파티션에 데이터베이스를 저장할 공간이 부족합니다.

$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/ManjaroVG-ManjaroRoot   29G   21G  6.4G  77% /
dev                                1.9G     0  1.9G   0% /dev
run                                1.9G  852K  1.9G   1% /run
tmpfs                              1.9G   76K  1.9G   1% /dev/shm
tmpfs                              1.9G     0  1.9G   0% /sys/fs/cgroup
tmpfs                              1.9G  596K  1.9G   1% /tmp
/dev/mapper/ManjaroVG-ManjaroHome  197G   54G  133G  29% /home
/dev/sda1                          247M   88M  147M  38% /boot
tmpfs                              383M  8.0K  383M   1% /run/user/1000

my.cnf의 datadir을 cnf새 위치로 변경하면 권한 문제가 발생함([경고] 테스트 파일을 생성할 수 없음 /home/u/tmp/mysql/acpfg.lower-test )

MariaDB/MySQL이 Linux에서 데이터베이스를 저장하는 디렉터리(예: /home/u/tmp/mysql)를 변경하는 방법은 무엇입니까?

답변1

다른 위치에서 데이터 디렉터리를 찾도록 MySQL을 재구성하거나 원래 위치 위에 새 위치를 바인드 설치할 수 있습니다.

mysql변경하기 전에 서비스가 중지되었는지 확인하세요.

그런 다음 모든 파일과 하위 디렉터리를 원래 위치에서 새 위치로 이동합니다.

MySQL 재구성

편집 /etc/my.cnf하고 다음으로 변경하십시오 datadir.

datadir=/home/u/tmp/mysql

또는...

바인드 마운트

바인드 마운트를 사용하여 원래 위치 위에 새 위치를 마운트합니다.

mount --bind /home/u/tmp/mysql /var/lib/mysql

모든 것이 제대로 작동하고 있다고 만족하면 수정하여 /etc/fstab영구적으로 만드세요.

/home/u/tmp/mysql /var/lib/mysql  none  bind 0 0

파일 권한

어떤 방법을 선택하든 아래와 같이 새 위치에 대한 권한이 올바른지 확인해야 합니다.

최상위 디렉터리( /home/u/tmp/mysql)와 아래의 모든 항목은 사용자와 그룹이 소유해야 합니다 mysql( mysqlArch Linux에서 실행한다고 가정).

# chown -R mysql. /home/u/tmp/mysql

모든 파일은 다음과 같습니다.

# find /home/u/tmp/mysql/ -type f -exec chmod 0660 {} \;

모든 디렉토리는 다음과 같습니다.

# find /home/u/tmp/mysql/* -type d -exec chmod 0700 {} \;

최상위 디렉토리는 다음과 같습니다.

# chmod 0755 /home/u/tmp/mysql

답변2

이와 같은 설정은 MySQL 구성 파일(예: /etc/mysql/my.cnf, 정확한 위치는 시스템에 따라 다름)에 들어갑니다. 문제의 설정은 datadir입니다.http://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_datadir더 많은 정보를 알고 싶습니다.

관련 정보