클라이언트 도구와 데이터베이스 서비스의 관계 이해
MySQL 과 Navicat 의 관계를 명확히 구분해야 효율적인 데이터 관료가 가능하다. MySQL 은 실제 데이터를 저장하고 쿼리를 처리하는 서버 프로세스이며, Navicat 은 이 서비스를 시각적으로 제어하는 클라이언트 애플리케이션에 해당한다.
- MySQL(서버): 운영체제 위에서 구동되는 서비스 형태로, 네트워크 포트(기본 3306) 를 열어 외부 요청을 대기한다.
- Navicat(클라이언트): 사용자의 명령을 SQL 문으로 변환하여 서버로 전송하고 결과를 그래픽으로 보여주는 중계자 역할만 수행한다.
따라서 한 대의 컴퓨터에서 여러 개의 Navicat 창을 열더라도, 이것이 같은 MySQL 서비스 인스턴스에 연결된다면 포트 번호는 동일하게 유지되어야 한다. 단, 서로 다른 MySQL 버전을 동시에 구동할 경우 포트 충돌이 발생하므로 각 인스턴스별 고유의 포트를 할당해야 한다.
로컬 환경에서 이중 MySQL 인스턴스 구성하기
개발 환경 테스트나 버전 마이그레이션을 위해 단일 OS 에 두 가지 이상의 MySQL 서브스를 띄워야 할 때, 다음 절차를 따른다. 여기서는 Windows 환경 기준이며, 디렉토리 경로와 서비스 이름은 사용자 환경에 맞게 수정해서 적용해야 한다.
1. 준비 작업 및 폴더 구조 설계
두 개의 인스턴스가 독립적으로 동작하려면 물리적으로 격리된 저장소 공간이 필수적이다. 공유 폴더를 사용하면 데이터 파일 손상이 발생할 수 있다.
# 예시 디렉토리 구성
D:\MySQL\Primary # 주요 인스턴스 (버전 5.7 또는 8.0)
D:\MySQL\Secondary # 보조 인스턴스 (최신 버전 등)
각 폴더 내부에는 실행 파일(bin), 라이브러리(lib), 그리고 데이터가 저장될 data 폴더를 별도로 생성한다.
2. 첫 번째 인스턴스 구성 (포트 3306)
기본 포트인 3306 을 사용하는 메인 인스턴스를 먼저 설정한다.
2.1 설정 파일 작성
메인 인스톨 경로 하위에 my_primary.ini 파일을 생성한다.
[mysqld]
basedir=D:\MySQL\Primary
datadir=D:\MySQL\Primary\data
port=3306
character-set-server=utf8mb4
log-error=D:\MySQL\Primary\data\error.log
[client]
port=3306
default-character-set=utf8mb4
2.2 초기화 및 서비스 등록
관리자 권한으로 터미널을 열고 bin 디렉토리로 이동한 후 다음 명령어를 입력한다.
# 초기화 (초기 비밀번호 없이 설정)
mysqld --initialize-insecure --user=mysql --defaults-file="D:\MySQL\Primary\my_primary.ini"
# 윈도우 서비스 등록 (서비스명: MySQL_PRIMARY)
mysqld --install MySQL_PRIMARY --defaults-file="D:\MySQL\Primary\my_primary.ini"
# 서비스 시작
net start MySQL_PRIMARY
서비스 시작 후 root 계정으로 접속하여 암호를 변경한다. 이때 skip-grant-tables 옵션이 있다면 제거 후 다시 시작해야 정상 작동한다.
3. 두 번째 인스턴스 구성 (포트 3309)
차별화된 포트와 경로를 사용하여 두 번째 인스턴스를 설치한다.
3.1 설정 파일 수정
보조 인스톨 경로에 my_secondary.ini를 만든다. 중요: 포트 번호와 데이터 경로는 반드시 달라야 한다.
[mysqld]
basedir=D:\MySQL\Secondary
datadir=D:\MySQL\Secondary\data
port=3309
character-set-server=utf8mb4
log-error=D:\MySQL\Secondary\data\error.log
[client]
port=3309
default-character-set=utf8mb4
3.2 초기화 및 서비스 등록
첫 번째 인스턴스와 유사하지만 서비스명과 경로가 다름을 주의한다.
# 관리자 권한 CMD 에서 실행
cd D:\MySQL\Secondary\bin
# 초기화
mysqld --initialize-insecure --user=mysql --defaults-file="D:\MySQL\Secondary\my_secondary.ini"
# 서비스 등록 (서비스명: MySQL_SECONDARY)
mysqld --install MySQL_SECONDARY --defaults-file="D:\MySQL\Secondary\my_secondary.ini"
# 서비스 실행
net start MySQL_SECONDARY
접속 시 기본 인증 방식 이슈가 발생할 수 있으므로, 필요시 다음과 같이 인증 플러그인을 변경한다.
mysql -u root -P 3309 -p
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NewPassword';
FLUSH PRIVILEGES;
4. Navicat 와의 연동 확인
설정된 두 가지 인스턴스는 각각 별도의 커넥션 프로필로 등록한다.
| 프로필명 | 호스트 | 포트 | 사용자 | 비밀번호 |
|---|---|---|---|---|
| Local_Dev_DB | 127.0.0.1 | 3306 | root | MainPass |
| Local_Test_DB | 127.0.0.1 | 3309 | root | TestPass |
이제 왼쪽 연결 목록에서 두 개 모두 정상 접속 가능한지 테스트 버튼으로 확인한다. 모든 항목이 성공하면 두 개의 독립적인 MySQL 환경을 동시에 활용할 수 있다.
주요 체크 포인트
- 포트 중복 확인: 특정 포트가 이미 점유되어 있지 않다면
netstat -ano | findstr 3306등을 통해 프로세스 식별자(ID) 를 확인하고 종료해야 한다. - 서비스 고유명: 윈도우 서비스 매니저에서 서비스 이름이 겹치지 않도록 해야 하며, 이는 설치 시
--install뒤에 지정하는 문자열로 결정된다. - 권한 문제: 로그 파일이나 데이터 폴더에 대한 쓰기 권한이 부여되지 않으면 서비스가 시작되지 않으므로, 디렉토리 속성에서 Everyone 이나 SYSTEM 접근 권한을 허용해 둔다.