Ubuntu Server 10.04에서 MySQL 데이터 디렉토리 변경

Ubuntu Server 10.04에서 MySQL 데이터 디렉토리 변경

우분투 서버 10.04에서 데이터 디렉토리를 변경하려고 할 때 다음 오류가 발생했습니다.

100809 19:33:00 [Note] Plugin 'FEDERATED' is disabled.
/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
100809 19:33:00 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
100809 19:33:00  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'create'.
InnoDB: Cannot continue operation.

답변1

권한에 대한 일반적인 혼란 끝에 OP는 권한과 경로 권한이 없다는 문제가 아니라 AppArmor가 MySQL이 새 위치를 읽고 쓰는 것을 방해한다는 것을 깨달았습니다.

그의 해결책은 다음과 같습니다.

먼저 MySQL을 중지하여 조작하는 동안 이상한 일이 발생하지 않도록 하세요.

$ sudo stop mysql

그런 다음 모든 데이터베이스 디렉터리를 새 홈으로 이동합니다.

$ sudo mv /var/lib/mysql/<all folders> /new-mysql-dir/

파일을 이동하지 마십시오. 파일은 mysql에 의해 생성됩니다. 폴더(데이터베이스)만 이동하십시오.

그런 다음 AppArmor에 mysql이 새 폴더를 사용할 수 있도록 정중하게 요청하세요.

$ sudo vim /etc/apparmor.d/usr.sbin.mysqld
  >> add lines
     /new-mysql-dir/ r,
     /new-mysql-dir/** rwk,

그런 다음 mysql에게 datadir이 이동되었음을 알립니다.

$ sudo vim /etc/mysql/my.cnf 
  >> change the line
     datadir=/var/lib/mysql
  >> to
     datadir=/my-new-db-dir/

참고: 데이터베이스 설정에 따라 innodb-data-home-dir 등도 변경해야 할 수도 있습니다.

그런 다음 AppArmor를 다시 시작하여 새 설정을 읽습니다.

$ sudo /etc/init.d/apparmor restart

그리고 새로운 datadir을 사용하여 MySQL을 다시 시작하십시오.

$ sudo start mysql

관련 정보