mysql 데몬 실행에러 - Table 'mysql.host' doesn't exist
- 작업환경 -
Database Version : MySQL 5.0.19
OS : Solaris 8. 2/02
(mysql 설치 디렉토리가 /usr/local/mysql 이라고 가정)
- 사례
ⓐ MySQL을 정상적으로 설치후 데몬을 실행하려했으나 아래와 같은 에러를 발생시키며 데몬이 실행이 안될때.
ⓑ MySQL을 정상적으로 사용하던중 비정상적으로 서버가 죽은 뒤에 재부팅한 후 데몬을 실행하려 했으나 아래와 같은 에러를 발생시키며 데몬이 실행이 안될때.
- 현상 (앞으로 더 추가 예정)
ⓐ 데몬을 실행시키려 했으나 아래와 같은 에러를 발생시키며 데몬이 실행이 안될때.
shell> bin/mysqld_safe --user=mysql &
[1] 555
shell> Starting mysqld daemon with databases from /usr/local/mysql/data
STOPPING server from pid file /usr/local/mysql/data/vfms.pid
060323 17:24:19 mysqld ended
[1] + done ../bin/mysqld_safe --user=mysql
shell>
- 확인사항
ⓐ MySQL설치시 mysql_install_db --user=mysql 명령을 실행하였나?
<소스로 설치한 경우>
shell> ./scripts/mysql_install_db --user=mysql
<pkg로 설치한 경우>
shell> ./bin/mysql_install_db --user=mysql
ⓑ 기본 DB들의 데이터가 존재하는가? mysql과 test 디렉토리
<소스로 설치한 경우> shell> ls ./var
<pkg로 설치한 경우> shell> ls ./data
shell> ls ./var 혹은 ls ./data
ib_logfile0 mysql-bin.000001 mysql
ib_logfile1 mysql-bin.000002 test
ibdata1 mysql-bin.index host명.err
ⓒ mysql 의 Error 로그를 기록하는 host명.err 파일의 내용을 확인해 보았는가?
shell> vi ./var/host명.err
.
.
060323 17:24:18 mysqld started
060323 17:24:19 InnoDB: Started; log sequence number 0 43655
060323 17:24:19 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
060323 17:24:19 mysqld ended
ⓓ 위에서 확인한 결과 mysql과 test() 디렉토리는 존재하지만 mysql의 디렉토리 내부에는 아무런 데이터가 없지 않은가? (단, test 디렉토리내에는 아무런 화일이 없어도 무관)
아래와 같이 테이블명.MYD, 테이블명.MYI, 테이블명.frm 등의 파일들이 존재해야한다.
shell> ls ./data/mysql
columns_priv.MYD proc.frm
columns_priv.MYI procs_priv.MYD
columns_priv.frm procs_priv.MYI
db.MYD procs_priv.frm
db.MYI tables_priv.MYD
db.frm tables_priv.MYI
func.MYD tables_priv.frm
func.MYI time_zone.MYD
func.frm time_zone.MYI
help_category.MYD time_zone.frm
help_category.MYI time_zone_leap_second.MYD
help_category.frm time_zone_leap_second.MYI
help_keyword.MYD time_zone_leap_second.frm
help_keyword.MYI time_zone_name.MYD
help_keyword.frm time_zone_name.MYI
help_relation.MYD time_zone_name.frm
help_relation.MYI time_zone_transition.MYD
help_relation.frm time_zone_transition.MYI
help_topic.MYD time_zone_transition.frm
help_topic.MYI time_zone_transition_type.MYD
help_topic.frm time_zone_transition_type.MYI
host.MYD time_zone_transition_type.frm
host.MYI user.MYD
host.frm user.MYI
proc.MYD user.frm
proc.MYI
- 해결 방법
설치시 기본 DB의 테이블들이 제대로 생성되지 않았거나 불완전한 mysql의 종료로 인해 지워진 경우 이므로 정상적으로 설치된 mysql의 기본 DB관련 파일들을 복사해서 덮어쓰기하면 된다.
블로그에 첨부된 파일은 MySQL 5.0.19의 기본 DB(mysql)의 데이터들을 tar로 묶은 것이다.
해당 파일들을 내려받은 후 mysql의 var/mysql 혹은 data/mysql 디렉토리에 복사한다.
이전에 등록된 사용자들의 계정과 비밀번호들은 당연히!! 존재하지 않을 것이며, 최초 설치시에 존재하는 root 계정만이 존재할 것이다. 또한 root 의 비밀번호도 초기화되어 있을 것이다.
또한 mysql DB의 user 테이블에 등록된 Host의 이름(현재는 'CHANGE'로 세팅)을 자신의 서버 명으로 바꿔주도록 하세요. ^^*
shell> cd /usr/local/mysql/var
shell> tar -xvf mysql_5.0.19.pkg_data.tar
..
.
shell> ../bin/mysqld_safe --user=mysql &
[1] 596
shell> Starting mysqld daemon with databases from /usr/local/mysql/data <--- 지그시 Enter를 눌러준다. ^^*
---------------------------------------------------------------------------------------
제가 위에 적은 방법대로 모두들 해결되길 바랄께요~~ ^^*
'Development > Database' 카테고리의 다른 글
MySQL 실행중인 쿼리 확인(show processlist) 및 강제종료(kill, stop) 방법 (0) | 2021.09.21 |
---|---|
DBMS 데이터 언어 - DDL, DML, DCL, TCL 의 정의 (0) | 2020.04.03 |
MySQL 에러코드와 에러메세지(ERROR Codes and Messages) (0) | 2020.02.18 |
org.postgresql.util.PSQLException: ERROR: operator does not exist: integer = character varying (0) | 2019.06.16 |
[MySQL] ERROR 1366 (HY000) at line 1: Incorrect string value: (0) | 2018.07.24 |
댓글