CentOS에 MySQL 5.6.27 설치 실패와 해결 방법 정리
안녕하세요. 요즘 리눅스 서버에 MySQL 설치하는 일, 생각보다 까다롭더라고요. 저도 며칠 전 CentOS 환경에서 MySQL 5.6.27 버전을 설치하려다 여러 오류를 겪었고… 겨우겨우 해결했어요. 혹시 저처럼 같은 문제로 막히는 분들 계실까 봐, 여기에 과정과 해결 방법을 정리해봤어요. 터미널에서 오류 메시지 하나하나 보면서 머리 싸매던 그 시간이 생각나네요ㅎㅎ
그럼, 어떤 문제들이 있었고 어떻게 풀었는지 찬찬히 따라와 보세요!
1. 환경 설정 및 초기 준비
이번에 제가 작업한 환경은 CentOS 7이었고요, MySQL은 5.6.27 버전 소스를 받아서 직접 컴파일 설치하려고 했어요. 근데 진짜 생각보다 호락호락하지 않더라고요. 처음엔 기본적인 의존성 패키지부터 설치했어요. cmake
, gcc
, gcc-c++
, ncurses-devel
등이 필수거든요. 그런데 저처럼 처음 하시는 분들은 대부분 cmake
관련 에러부터 만날 거예요.
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
이런 식의 메시지가 떴다면, 컴파일러가 제대로 설치 안 된 거예요.
그냥 yum groupinstall "Development Tools"
한 줄이면 해결되긴 해요.
여기에 추가로 yum install cmake gcc gcc-c++ ncurses-devel
이렇게 실행하면 대부분의 기본 환경은 갖춰져요.
2. cmake 단계에서의 자주 발생하는 에러
소스를 받아서 압축 풀고, cmake
명령으로 빌드 구성하려고 하면 또 다른 문제가 생겨요. 아래 명령을 실행했을 때…
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/mysql/data ...
갑자기 막 CMAKE_CXX_COMPILER
를 못 찾겠다거나, Curses
가 없다고 하는데 진짜 당황스럽죠. 저도 처음엔 그랬거든요. 이럴 땐 yum install ncurses-devel
로 해결되더라고요. CMake는 내부적으로 굉장히 많은 조건을 검사하기 때문에, 누락된 패키지가 하나라도 있으면 바로 오류가 뜨니까요.
아래는 당시 제가 실행한 명령들이었고, 위에서 말씀드린 오류가 실제로 이렇게 나왔어요:
[root@ice mysql-5.5.27]# cmake .
The C compiler identification is unknown
The CXX compiler identification is unknown
CMake Error: your C compiler: “CMAKE_C_COMPILER-NOTFOUND” was not found. Please set CMAKE_C_COMPILER to a valid compiler path or name.
CMake Error: your CXX compiler: “CMAKE_CXX_COMPILER-NOTFOUND” was not found. Please set CMAKE_CXX_COMPILER to a valid compiler path or name.
3. make 단계의 실패와 최종 성공
cmake를 겨우 통과하고 나서 make
를 실행했을 때 또 한 번 멘붕이 왔어요. 컴파일 중간에 undefined reference
이런 식으로 오류가 났는데, 그건 보통 라이브러리 문제거든요. libaio-devel
이 없어서 그런 경우가 많아요. 이럴 땐 yum install libaio-devel
하면 됩니다.
컴파일이 정상적으로 끝나면 make install
하고 나서 데이터 디렉토리 초기화, 사용자 계정 설정 등을 하면 되는데요, 저는 아래처럼 설정했어요:
/usr/local/mysql/scripts/mysql_install_db \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/mysql/data
그리고 나서 mysqld
를 실행하면, 아래처럼 반가운 메시지가 뜹니다:

진짜 이 화면 보고 괜히 혼자 뿌듯했어요 ㅎㅎ
4. MySQL 실행 오류 해결법
설치까지는 잘 했는데, mysqld
실행이 안 될 때가 있어요. 저는 처음에 아래처럼 실행했는데 아무 반응이 없는 거예요.
/usr/local/mysql/bin/mysqld_safe --user=mysql &
이럴 땐 /var/log/mysqld.log
로그 파일을 꼭 확인해보세요. 저는 로그를 보고 나서야 socket
경로 문제라는 걸 알았어요. 보통 my.cnf
설정 파일에 socket
경로가 잘못 지정되어 있거나, 디렉토리가 없어서 발생해요.
해결 방법은 간단했어요. socket=/tmp/mysql.sock
으로 설정하고, 해당 경로에 디렉토리가 없으면 mkdir -p /tmp
해주면 끝나요. 이때 권한 설정도 잊으면 안 돼요.
chown -R mysql:mysql /tmp
chmod 755 /tmp
그리고 나서 다시 실행하면 정상적으로 프로세스가 올라갑니다.
5. PATH 환경변수 등록과 자동 실행 설정
매번 MySQL 실행하려고 경로 입력하기 귀찮잖아요. 그래서 아예 환경변수로 등록해두면 편해요. ~/.bash_profile
파일을 열어서 아래 내용을 추가해줍니다.
export PATH=$PATH:/usr/local/mysql/bin
그리고 source ~/.bash_profile
로 적용시키면 이제 mysql
명령어를 어디서든 쓸 수 있어요.
자동 실행도 설정해두면 더 좋겠죠? CentOS 7에서는 systemd
를 쓰니까 아래처럼 mysqld.service
파일을 만들어서 /etc/systemd/system/
에 저장해주고 systemctl enable mysqld
하면 부팅 시 자동으로 MySQL이 실행돼요.
6. 실수하기 쉬운 포인트 총정리
처음부터 끝까지 해보면서 제가 가장 많이 헤맨 건 의존성 설치 누락이었어요. ncurses-devel
, libaio-devel
, gcc-c++
, bison
, make
, cmake
… 하나라도 빠지면 cmake
가 뻗거나 make
가 실패하더라고요.
그리고 포트 열어주는 것도 잊기 쉬운데요, 방화벽이 켜져 있으면 외부에서 접속이 안 되니까 아래 명령도 꼭 해줘야 해요:
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
이거 안 해두고 접속 안 된다고 멘붕 오는 경우 정말 많아요. 저도 처음에 포트 때문인 줄도 몰랐었고요.
Q1. MySQL 5.6.27 컴파일 시 CMake 에러가 발생하는 이유는 뭔가요?
A1. 대부분의 경우 CMake 에러는 필수 의존 패키지가 누락됐기 때문이에요. 특히 gcc
, gcc-c++
, ncurses-devel
, bison
, cmake
중 하나라도 없으면 에러가 납니다. yum groupinstall "Development Tools"
로 한 번에 설치하는 게 좋아요.
Q2. undefined reference
오류는 왜 생기나요?
A2. 컴파일 도중 undefined reference
가 뜬다면 연결된 라이브러리가 누락된 상태예요. 주로 libaio-devel
이나 zlib-devel
같은 시스템 라이브러리를 설치하지 않아서 생겨요. yum install libaio-devel zlib-devel
로 해결됩니다.
Q3. mysql
명령어가 ‘not found’라고 뜨는 건 왜 그런가요?
A3. PATH 환경변수에 MySQL 실행 경로가 등록되어 있지 않아서 그래요. .bash_profile
파일에 export PATH=$PATH:/usr/local/mysql/bin
을 추가하고 source ~/.bash_profile
을 실행하면 해결돼요.
Q4. mysqld_safe
실행했는데 아무 반응이 없어요. 어떻게 하죠?
A4. 백그라운드 실행이라 터미널에 출력이 안 될 수 있어요. /var/log/mysqld.log
파일을 꼭 확인해보세요. socket 경로나 권한 문제일 수 있고, ps aux | grep mysqld
로 프로세스 확인도 가능합니다.
Q5. 설치 후 외부에서 접속이 안 됩니다. 방화벽 문제인가요?
A5. 맞아요. CentOS 기본 방화벽 설정에서는 3306 포트가 닫혀 있어요. firewall-cmd --permanent --add-port=3306/tcp
와 firewall-cmd --reload
로 포트를 열어주면 외부 접속이 가능해집니다.
이번에 직접 MySQL 5.6.27을 리눅스에서 설치하면서 느낀 건… 아무리 간단해 보여도 실제로 해보면 예상치 못한 문제가 정말 많다는 거였어요. 오류 하나 해결하면 또 다른 오류가 나오고, 그걸 또 구글링해서 찾아보고… 진짜 삽질의 연속이었죠.
그런데도 이렇게 끝까지 포기하지 않고 하나씩 해결하고 나니까, 다음엔 어떤 버전이든 똑같이 대응할 수 있을 것 같은 자신감이 생기더라고요. 혹시 지금 비슷한 상황에서 헤매고 있다면, 제가 겪었던 과정이 조금이나마 도움이 되었으면 좋겠어요. 설치 자체보다 중요한 건 그 과정을 ‘이해하고 넘어가는 것’ 같거든요.
혹시 글 보시고 궁금한 점 있으면 댓글로 남겨주세요. 실시간까진 안 되더라도 꼭 답변 드릴게요!