질문&답변
클라우드/리눅스에 관한 질문과 답변을 주고 받는 곳입니다.
리눅스 분류

답변 감사합니다.그런데...=.해결방법

작성자 정보

  • 박성수 작성
  • 작성일

컨텐츠 정보

본문

원인은 제가 위에서 말씀드린 대로구요.

정확인 것은 아니지만 Mysql이 업그레이드 되면서 3.23.4이상버전에서는 서버내에 mysql이라는 계정이 있어야 정상적인 실행이 되더군요.

따라서 위의 원인과 해결방법을 정리해 보면 다음과 같습니다.

원인1 : mysql이라는 계정이 없으면 정상실행이 안됨. 이전버전까지는 root소유로 실행이 되었으나 보안을 위하여 root계정실행이 안되며, mysql계정으로만 실행이 됨.

   해결방법     => useradd mysql 로 mysql계정을 생성해 준다.

원인2 : /usr/local/mysql/data 디렉토리가 mysql소유로 되어있지 않기 때문에 mysql계정이 write할 수 있는 권한이 없음, 정상 실행이 아니됨.

    해결방법  => chown -R mysql:mysql  /usr/local/mysql/data  로 data디렉토리를 mysql소유로 변경해줌.

이렇게 한 후에 mysql을 실행해 보시면 정상실행이 될 겁니다.

다음은 제가 테스트한 실제예를 보인 것입니다.  참고 하십시요.

 

1. mysql 실행시에 다음과 같이 에러가  발생함

[root@su4 bin]# ./safe_mysqld&
[1] 23265
[root@su4 bin]# chown: mysql: invalid user
Starting mysqld daemon with databases from /usr/local/mysql/data
020223 02:37:48  mysqld ended


[1]    Done                          ./safe_mysqld
[root@su4 bin]#

2. mysql error 파일로서 원인을 분석함.

[root@su4 bin]# cd ../data
[root@su4 data]#
[root@su4 data]# tail -f su4.err
020222 22:49:04  mysqld ended

020223 02:37:48  mysqld started
Fatal error: Can't change to run as user 'mysql' ;  Please check that the user exists!
020223  2:37:48  Aborting

020223  2:37:48  /usr/local/mysql/libexec/mysqld: Shutdown Complete

020223 02:37:48  mysqld ended

분석결과 mysql이라는 계정이 없다는 원인으로 에러가 발생했음을 알 수 있었음.
앞서 말씀드린 바와 같이 3.23.4대 이상 버전에서는 root로 실행이 되지않고 mysql이라는 계정으로 실행이 되어야하기 때문임.

 

3. mysql계정을 생성해줌.

[root@su4 data]#
[root@su4 data]# useradd mysql
[root@su4 data]#

4. mysql 재실행

[root@su4 bin]# ./safe_mysqld&
[1] 23331
[root@su4 bin]# Starting mysqld daemon with databases from /usr/local/mysql/data
020223 02:38:50  mysqld ended


[1]    Done                          ./safe_mysqld
[root@su4 bin]#

또다시 에러가 발생하였음.


5. 다시 mysql 에러 파일을 분석하여 봄.


[root@su4 data]#
[root@su4 data]# tail -f su4.err
020223  2:37:48  /usr/local/mysql/libexec/mysqld: Shutdown Complete

020223 02:37:48  mysqld ended

020223 02:38:50  mysqld started
020223  2:38:50  /usr/local/mysql/libexec/mysqld: Can't create/write to file '/usr/local/mysql/data/su4.pid' (Errcode: 13)
020223  2:38:50  /usr/local/mysql/libexec/mysqld: Can't find file: './mysql/host.frm' (errno: 13)
020223  2:38:50  /usr/local/mysql/libexec/mysqld: Error on delete of '/usr/local/mysql/data/su4.pid' (Errcode: 13)
020223 02:38:50  mysqld ended

분석결과 host.frm파일을 write할 수없다는 에러임을 알수 있음 error코드 13

 

6. 앞서 설명한 대로 data디렉토리를 mysql소유로 변경하여 mysql계정사용자가 write할 수 있도록 수정함.

[root@su4 data]# cd ..
[root@su4 mysql]# chown -R mysql:mysql data
[root@su4 mysql]# cd bin

7. mysql 재실행함.


[root@su4 bin]# ./safe_mysqld&
[1] 23400
[root@su4 bin]# Starting mysqld daemon with databases from /usr/local/mysql/data

[root@su4 bin]#
[root@su4 bin]#
[root@su4 bin]# ps -ef | grep mysqld
root     23400 21659  0 02:39 pts/4    00:00:00 sh ./safe_mysqld
mysql    23413 23400  0 02:39 pts/4    00:00:00 /usr/local/mysql/libexec/mysqld
mysql    23415 23413  0 02:39 pts/4    00:00:00 /usr/local/mysql/libexec/mysqld
mysql    23416 23415  0 02:39 pts/4    00:00:00 /usr/local/mysql/libexec/mysqld
[root@su4 bin]#

이상과 같이 실행이 정상적으로 됨을 확인함.

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,139 명
  • 현재 강좌수 :  36,208 개
  • 현재 접속자 :  281 명