답변 감사합니다.그런데...=.해결방법
작성자 정보
- 박성수 작성
- 작성일
컨텐츠 정보
- 4,024 조회
- 0 추천
- 목록
본문
원인은 제가 위에서 말씀드린 대로구요.
정확인 것은 아니지만 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]#
이상과 같이 실행이 정상적으로 됨을 확인함.
관련자료
-
이전
-
다음