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

mysql 실행시 에러 고수님들 답변 부탁합니다.

작성자 정보

  • 박성수 작성
  • 작성일

컨텐츠 정보

본문

아래 제가 답변한 글을 읽어보지 못하신것 같습니다.

다시한번 올립니다 답변이 될 수 있을 것입니다.

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

정확인 것은 아니지만 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]#

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

nalbi 님의 글



실행시 다음과 같은 에러가 납니다.

020223 15:00:53  mysqld started
020223 15:00:53  /usr/local/mysql/libexec/mysqld: Can't find file: './mysql/host
.frm' (errno: 13)
020223 15:00:53  mysqld ended

환경설정은 다음과 하였습니다.
./configure --prefix=/usr/local/mysql --with-charset=euc_kr
            --localstatedir=/var/local/mysql/data

shell> find / -name host.frm  로 검색한 결과는
/var/local/mysql/data/mysql/host.frm

입니다.

정말 어럽군요.
환경설정에 문제인것 같은데...아시는 분 좀 가르쳐 주세요....




 

관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,133 명
  • 현재 강좌수 :  36,171 개
  • 현재 접속자 :  325 명