[설치][관리] Mysql 설치 및 시작시 대표적인 에러와 대처법
=======================================================
Mysql 설치 및 시작시 대표적인 에러와 대처법
=======================================================
보통 솔라리스에서 gcc 를 이용하여 컴파일 하는 경우 warning 하나 없이
설치가 가능합니다. 하지만 이외의 시스템에서는 헤더 파일이 조금씩 다르
기 때문에 warning 메세지가 간혹 나타나기도 한다.
보통 컴파일시 생기는 문제는 컴파일 단계에서 configure 명령을 여러번
내릴 경우 발생합니다.
confiure 명령을 내리면 configure 의 결과를 config.cache파일에저장한
다음에 다시 configure를 실행할때 시간을 절약하기 위하여 이전의
config.cache 내용을 읽게 되는데 이때 시스템 환경이 바뀌었을때는 이전의
config.cache 내용을 읽으므로 error 가 나게 된다. 이때는 config.cache
파일의 유무를 확인한후 지워버린뒤 새로 configure 를 실행해준다.
컴파일시 생기는 다른 문제로는 sql_yacc.cc 파일을 컴파일 하는 도중
다음과 같은 에러가 나는 경우가 있다.
Internal compiler error: program cclplus got fata signal 11
또는
Out out virtual memory
또는
Virtual memory exhausted.
sql_yacc.cc 파일은 인라인 함수(Inline Function)를 사용하므로 매우 많은
메모리를 필요로 합니다. 따라서 이 문제는 대개 메모리나 스왑 영역이 부
족한 경우에 생기게 됩니다. 이문제를 해결하기 위해서는 configure 를 적용
할 때 다음과 같이 –with-low-memory 옵션을 주면 됩니다.
# ./configure –with-low-memory
GNU make version 이 낮을 경우 생기는 에러 내용이다.
making all in mit-pthreads make: Fatal error in reader: Makefile, line
18: Badly formed macro assignment
또는
make: file ‘Makefile’ line 18: Must be separator
또는
pthread.h: No such file or directory
이와 같은 메세지와 함께 에러가 발생하면 최신 make 를 설치하길 바란다.
이밖에 GNU gcc 버젼 문제로 생기는 경우도 있다.
client/libmysql.c:273 parse error before ‘__attribute__’
GNU gcc version 이 2.8.1 이하인 경우는 반드시 업그레이드 하길 바란다.
이밖에 컴파일시 ‘C++ compiler connot create executables’ 라는 메세지가
발생하는 경우도 있는데 이는 Mysql 이 C++ 을 컴파일러로 사용하는데 Mysql
설치하려는 시스템에서는 gcc 를 C++ 컴파일러로 사용하는 경우에 발생하는
에러 입니다. 이 문제를 해결하기 위해서는 g++,libg++,libstdc++ 을 설치해
야 한다. gcc 를 C++ 의 컴파일러로 그대로 사용하는 방법도 있는데 이는
configure 시 다음과 같이 gcc 를 컴파일러로 사용하겠다는 옵션을 적어주면
된다.
# CXX=”gcc -O3″ ./configure
Mysql 데몬을 실행시 발생하는 대표적인 에러는 다음과 같다.
mysqld: Can’t find file: ‘host.frm’
이는 mysql 설치후 DB 를 생성을 하지 않았을때 발생한다. mysql 설치후
반드시 초기 DB 를 생성해 주어야 한다. 다음과 같이 ..
# /usr/local/mysq/bin/mysql_install_db
Can’t start server: Bind on TCP/IP port: Address already in use
위의 메세지는 Mysql 이 사용하는 port 를 이미 다른곳에 사용중에 있을때
발생하는 메세지 이다. mysql 는 기본적으로 3306 포트를 사용하는데 이 포
트를 다른 서비스가 사용중이라면 다음과 같이 다른 포트를 사용하여 포트
충돌을 피해야 한다.
# /usr/local/mysql/bin/safe_mysqld -P3333 &
이밖에도 여러가지 에러와 문제가 발생할수 있다.
이렇땐 /usr/local/mysql/var/hostname.err 파일을 참조하여 문제를 해결
하면 된다.