앞에 포스팅한 것과 같은 문제다.


/etc/mysql/my.conf  의 datadir 에 write 할 수 없는 권한이기 때문이다. 



기본 datadir 은  my.conf에 설정되어 있고,   /var/lib/mysql 이다.

먼저, 해당하는 권한 폴더를 chown -R mysql:mysql [datadir] 을 통해 해결 가능하다. 

chmod -R 755  [datadir] 도 같이 해주자. 
      
또 !!! 이건 정말 삽질로 알아낸건데, 권한을 변경해도 정상동작하지 않는다  크크크 권한은 사실 가장 쉬운 해법이 었드랬다.

그럼  왜냐 !!? 
비밀이다. 

사실은....비밀은 아니고, 
조금 귀찮겠지만,  문제를 해결하려면 로그를 봐야 한다. 
    
로그 위치는  var/log/mysql/error.log 이다.   내가 겪은 에러의 유형은 3가지다.



1. InnoDB: Operating system error number 13 in a file operation    -->  권한이 없는 문제.

2. datadir을 재설정하고 재시작하는 방법을 몰랐기 때문...

3. 재부팅...



1번의 권한 문제야 위의 방법으로 해결하면 되고, 

재시작 문제는 아래와 같은 명령어를 때려 준다. ( 그냥 때려 , 계속 때려 ~~ )



새롭게 저장할 폴더의 권한을 mysql:mysql로 변경을 합니다.$ chown -R mysql:mysql /media/hdd/mysql

기존의 mysql폴더를 backup을 한 뒤에 생성한 mysql의 폴더를 기존의 mysql로 연결을 해줍니다.


sudo mv /var/lib/mysql /var/lib/mysql-old

ln -s [datadir] /var/lib/mysql


AppArmor에 datadir을 등록한 뒤에, apparmor profiles을 다시 로딩

sudo echo "alias /var/lib/mysql/ -> /your/new/datadir/," >> /etc/apparmor.d/tunables/alias

--> 이때 sudo 명령으로 동작하지 않으면 su 로 하면된다.  
근데 또 우분투 초짜들은 su를 하고 어려움을 겪지 ... 왜안되지??ㅋㅋ

안되는게 아니야 ... root의 비밀번호를 설정하지 않은 거지 ㅋㅋ


sudo passwd root 명령을 통해 비밀번호를 설정하고 다시 su를 통해 들어가서 sudo를 빼고 명령어를 때린다.

echo "alias /var/lib/mysql/ -> /your/new/datadir/," >> /etc/apparmor.d/tunables/alias


sudo /etc/init.d/apparmor reload

를 통해 변경된 datadir을 알려준다.


마지막으로 mysql서버를 재시작해준다. 


sudo /etc/init.d/mysql restart


그래도 안되면, 재부팅을 해보자.... 이건 운에 맡긴다 제바알 ....



+ Recent posts