[설치][관리] 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 파일을 참조하여 문제를 해결

하면 된다.

서진우

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.