MySQL 서버 접속용 App이 없거나, 서버 설정 상 원격에서 접속이 되지 않으면, 보통 mysql 클라이언트 명령어 기반 프로그램으로 접속한다.
그런데 로컬 기반 연결이 되는 경우 보통 my.ini 혹은 my.cfg에 있는 설정에 있는 내용을 기반으로 네임파이프로 연결을 시도한다. 문제는 설치가 기본값이 아닌 특이한 형태로 설치된 경우 data 폴더를 제대로 매핑하지 못해 엉뚱한 위치에 있는 mysql.sock 이라는 네임스페이스 정보를 찾으려고 한다.
회사의 서버에서도 mysql과 mariaDB가 하나의 서버에 동시에 설치되어 있다보니, mysql.sock 파일이 기본위치에 있지 않는다. 그러다 보니, mysql을 실행하면, data폴더를 찾을 수 없고, 한술 더 떠 기본위치에 mysql.sock을 찾을 수 없는 상태가되었다.(리눅스에서는 기본위치가 /tmp/mysql.sock 이다.)
그래서 data 폴더를 어떻게 매핑할까… 고민하다가, 그냥 Socket으로 잘 연결되면 문제 없을 것이라는 생각에 시도해보니, 되었다.
/opt/mariadb/bin/mysql -u dbuser -p -P 3307 --protocol=tcp testdevdb
저기서 핵심은 --protocal=tcp 이다.
기본값은 아마 pipe 인것 같다. 그러다 보니, 계속 mysql.sock을 찾았고, 문제는 data 경로를 못찾아 그 안의 my.cfg에 정의된 값을 못찾고, 기본값에서 mysql.sock을 찾으니 못찾는 악순환의 반복이였던 것 같다.
MS-SQL만 쓰다보니, 매우 편하게 작업을 해와서 좀 난감했지만, 여튼 하나씩 파악해서 해결할 수 있게되서 다행이다.
2019. 2. 19. 오후 9:41