MySQL 서버 접속 방법과 초기 설정 정리

핵심 요약

  • “설치는 됐는데 접속이 안 된다”는 초보자에게 가장 흔한 상황입니다. 해결의 80%는 (1) 서버가 켜져 있는지, (2) Host/Port가 맞는지, (3) 계정/비밀번호가 맞는지를 순서대로 확인하면 끝납니다.
  • 환경 변수(PATH)는 “mysql 명령어를 어디서든 쓰게 하는 설정”입니다. 다만 Windows에만 필수인 경우가 많고, Mac/Linux는 설치 방식에 따라 다릅니다.
  • root 계정은 “최종 관리자”라서 학습용이라도 관리가 필요합니다. 가능하면 root는 로컬 전용으로 두고, 개발용 계정을 따로 만들어 쓰는 게 안전합니다.
  • 접속 오류는 대부분 1045(권한/비번/호스트) 또는 2003(서버 꺼짐/포트 문제)로 귀결됩니다. 본문 체크리스트대로만 점검하면 해결됩니다.

목차

도입부: 설치 후 막막함 해결

설치는 끝났는데… 이제 뭘 해야 할지 막막하신가요? 많은 분들이 “Finish” 이후에 멈춥니다. 이 글은 MySQL 서버에 실제로 접속하고, 초기 보안/계정 세팅을 끝내고, CLI와 Workbench로 안정적으로 접속하는 방법을 “초보자 기준”으로 정리합니다.

특히 접속 문제는 대부분 아래 3가지를 순서대로 확인하면 해결됩니다.

  1. 서버가 켜져 있는가? (서비스/데몬 running)
  2. 어디로 접속하는가? (Host/Port: localhost vs 127.0.0.1, 3306 등)
  3. 누구로 접속하는가? (user/password + 권한)

Step 0: 가장 먼저! “서버가 켜져 있나?” 10초 점검

초보자가 가장 많이 하는 실수는 서버(MySQL)가 꺼진 상태에서 접속부터 시도하는 것입니다. 아래에서 본인 OS에 해당하는 것 하나만 확인하세요.

[Windows] 서비스 실행 상태 확인

  1. Win + Rservices.msc
  2. MySQL, MySQL80, MySQL84, MySQL90 같은 항목 찾기
  3. 상태가 “실행 중”이 아니면 우클릭 → 시작

[Linux(Ubuntu)] 데몬 상태 확인

sudo systemctl status mysql

Active: active (running)이면 정상입니다.

[Mac] 설치 방식에 따라 다름

  • DMG/PKG 설치: 시스템 설정(System Settings)에 MySQL Start/Stop 항목이 보이는 경우가 많습니다.
  • Homebrew 설치: 아래 명령으로 확인합니다.
brew services list

여기서 멈췄다면?
서버가 실행 중이 아니면, 이후 단계(비밀번호/Workbench/포트)를 아무리 만져도 접속이 안 됩니다. Step 0에서 “running”을 먼저 확보하고 다음으로 넘어가세요.


Step 1: (필요한 경우) MySQL 환경 변수(PATH) 설정

mysql을 입력했는데 'mysql'은(는) 내부 또는 외부 명령어가 아닙니다가 뜨면, 운영체제가 mysql 실행 파일 위치를 모르는 상태입니다.

1) 먼저 “mysql이 어디 있는지”부터 확인하기

[Windows]

where mysql

아무 것도 안 나오면 PATH에 아직 등록이 안 된 것입니다.

[Mac/Linux]

which mysql

경로가 출력되면 이미 PATH가 잡혀 있는 경우가 많아 Step 1을 건너뛰어도 됩니다.

2) [Windows] PATH 등록(필수인 경우가 많음)

설치 버전에 따라 폴더명이 달라질 수 있습니다. 핵심은 bin 폴더까지 넣는 것입니다.

  • 예시: C:\Program Files\MySQL\MySQL Server 8.4\bin
  • 예시: C:\Program Files\MySQL\MySQL Server 9.0\bin
  1. Win 키 → 시스템 환경 변수 편집 검색 실행
  2. 하단 환경 변수 클릭
  3. 시스템 변수의 Path → 편집
  4. 새로 만들기...MySQL Server ...\bin 경로 추가
  5. 확인으로 닫기

⚠️ 매우 중요: PATH를 바꾼 뒤에도 안 되는 질문의 대부분은 “기존 터미널 창을 계속 사용”해서 생깁니다.
반드시 현재 열려 있는 모든 CMD/터미널 창을 닫고, 새로 열어서 다시 시도하세요.

3) [Mac] PATH가 필요할 때만(설치 방식에 따라 다름)

예: DMG/PKG 설치인데 터미널에서 mysql이 안 잡히면 아래를 추가합니다.

echo 'export PATH="/usr/local/mysql/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

4) 설정 검증(공통)

mysql --version

Step 2: 초기 보안과 권한 – root 보안 & 개발용 계정 만들기

root는 데이터베이스의 “슈퍼 관리자”입니다. 초보자일수록 root로만 계속 쓰는 습관이 생기기 쉬운데, 실무에서는 위험합니다. 따라서 아래 2가지를 권장합니다.

  1. root 비밀번호 점검/변경
  2. 개발용 계정(예: dev_user) 생성 후 그 계정으로 접속

2-1) root 비밀번호 변경(권장 문법)

ALTER USER 'root'@'localhost' IDENTIFIED BY '새로운비밀번호';

참고: 대부분의 경우 위처럼 ALTER USER로 변경하면 즉시 반영됩니다.
FLUSH PRIVILEGES;는 주로 “특수 상황(권한 테이블을 직접 수정했을 때 등)”에서만 필요합니다. 초보자는 우선 ALTER USER만 정확히 수행하는 것을 추천합니다.

2-2) 개발용 계정 생성(강추)

로컬 개발 기준 예시입니다. (원격 접속이 필요하면 host를 조정하세요)

-- 1) 개발용 DB 생성(원하는 이름으로)
CREATE DATABASE IF NOT EXISTS my_first_db;

-- 2) 개발용 사용자 생성
CREATE USER IF NOT EXISTS 'dev_user'@'localhost' IDENTIFIED BY 'DevPassword!123';

-- 3) 개발용 DB에 필요한 권한만 부여
GRANT ALL PRIVILEGES ON my_first_db.* TO 'dev_user'@'localhost';

-- 4) 권한 확인(선택)
SHOW GRANTS FOR 'dev_user'@'localhost';

2-3) [Linux에서 특히 중요] root가 “비밀번호 로그인”이 아닐 수도 있음

Ubuntu/Debian 계열은 설치 방식에 따라 root가 비밀번호로 로그인되지 않고, sudo mysql처럼 “관리자 권한으로만” 들어가지는 설정(소켓 인증)인 경우가 있습니다. 이때 Workbench에서 root 접속이 안 되면 당황하기 쉬운데, 이런 환경에서는 위의 dev_user 같은 별도 계정을 만들어 비밀번호 로그인으로 쓰는 방식이 가장 깔끔합니다.


Step 3: 개발자의 기본기 – CLI(커맨드라인) 접속

서버 환경(특히 Linux)에서는 GUI가 없을 수 있어 CLI가 필수입니다. 아래 “접속 명령어 3종 세트”만 익히면 대부분의 문제를 풀 수 있습니다.

3-1) 접속 명령어 3종 세트(중요)

# 1) 로컬 기본 접속(가장 흔함)
mysql -u dev_user -p

# 2) 로컬 TCP 강제 접속(Host/Port를 명시)
mysql -h 127.0.0.1 -P 3306 -u dev_user -p

# 3) 원격 접속(서버 IP/도메인으로 접속)
mysql -h 서버IP_or_도메인 -P 3306 -u dev_user -p

중요: localhost vs 127.0.0.1 차이
환경에 따라 localhost는 “소켓 접속”, 127.0.0.1은 “TCP 접속”으로 동작해 같은 계정이라도 매칭이 달라질 수 있습니다. 접속이 안 되면 Host를 바꿔서 테스트해보세요.

3-2) 비밀번호 입력 보안 주의

절대 mysql -u root -p비밀번호처럼 한 줄에 비밀번호를 붙이지 마세요. 명령 히스토리에 남아 위험합니다. -p까지만 치고 엔터를 누른 뒤 나오는 프롬프트에서 입력하세요.

참고: 비밀번호 입력 시 화면에 글자가 아무 것도 안 보이는 게 정상입니다(별표 표시가 없을 수도 정상).

3-3) 접속 성공 확인 + 한글 깨짐(utf8mb4) 10초 점검

접속에 성공했다면, 먼저 기본 정보와 DB 목록을 확인해보세요.

SELECT VERSION();
SELECT USER();
SHOW DATABASES;

✅ 한글 깨짐 방지(초보자 필수): utf8mb4 확인
한글이 나중에 ???로 보이는 사고를 막기 위해, 접속 직후 아래를 꼭 확인하세요.

status
-- 또는 \s

출력 화면 중간쯤에 있는 Server character set / Db character set 항목을 보세요. 여기 값이 “한글/이모지까지 안전한 설정인지”를 가장 빠르게 판단해줍니다.

  • Good ✅: utf8mb4 (이모지까지 지원하는 가장 안전한 한글 설정)
  • Bad ❌: latin1 (한글이 깨질 수 있음 → 설정 변경 필요)

만약 utf8mb4가 아니라면(또는 확실하지 않다면), 아래로 “실제 변수 값”을 더 정확히 확인하는 게 안전합니다.

SHOW VARIABLES LIKE 'character_set_%';
SHOW VARIABLES LIKE 'collation_%';

결과가 기대와 다르면, (1) 서버 설정 파일(my.cnf/my.ini)의 기본 문자셋, (2) 생성한 DB/테이블의 문자셋을 점검해야 합니다. 초보자는 우선 “현재 상태를 정확히 확인”하는 것만 해도 큰 도움이 됩니다.


Step 4: Workbench 접속(로컬/원격) + 흔한 함정

Workbench는 초보자에게 특히 좋습니다. 다만 “설정은 맞는데 왜 계속 실패하지?” 같은 함정이 있어 아래 체크포인트를 꼭 같이 보세요.

4-1) 새 연결 생성(New Connection)

항목 로컬 개발(추천 예시) 설명
Connection Name Local-Dev 별칭(아무거나)
Hostname 127.0.0.1 또는 localhost 내 PC(로컬)
Port 3306 기본 포트
Username dev_user (권장) / 또는 root root보다 dev_user 권장

4-2) Test Connection → 저장(Vault/Keychain) 관련 주의

  1. Test Connection 먼저 눌러서 성공 여부를 확인
  2. 비밀번호 저장(Store in Vault/Keychain)을 켜면 편하지만, 아래 함정을 주의하세요.

Workbench 함정 1) Hostname이 바뀌면 저장된 비번이 적용되지 않을 수 있음
예를 들어 localhost로 저장해둔 비번이 127.0.0.1 연결에서는 다시 물어보거나 실패할 수 있습니다. 이럴 땐 “비번이 틀린 게 아니라 연결(Hostname)이 다른 것”일 수 있으니 Hostname을 통일해 보세요.

4-3) 인증 플러그인/SSL 관련(구버전 도구에서 발생)

MySQL 8.x/9.x에서는 보안 강화를 위해 기본 인증 방식이 강화되어 있고, 아주 오래된 클라이언트/서드파티 툴은 이를 지원하지 못해 접속이 실패할 수 있습니다.

  • 가장 좋은 해결: Workbench/클라이언트 툴을 최신으로 업데이트
  • 임시 우회(권장하진 않음): 인증 플러그인 변경 등은 보안 리스크가 있어 꼭 필요할 때만 신중하게

초보자를 위한 안전장치: Workbench Safe Updates(강추)
실수로 WHERE 절 없이 DELETE/UPDATE를 실행하면 “전체 데이터가 한 번에” 바뀌거나 삭제될 수 있습니다. 아래 옵션을 켜두면 이런 대형 사고를 상당 부분 예방할 수 있습니다.

  1. Workbench 메뉴: [Edit] → [Preferences]
  2. [SQL Editor] 탭으로 이동
  3. 하단의 Safe Updates 체크가 켜져 있는지 확인
  4. 설정 후 Workbench를 재시작하면 더 확실합니다.

Step 5: 접속이 안 될 때? 오류별 해결 체크리스트

초보자가 겪는 오류의 대부분은 아래 2개(1045/2003) + “포트 충돌”로 끝납니다.

5-1) Error 1045: Access denied for user…

  • 원인 후보 1: 비밀번호 오입력(가장 흔함)
  • 원인 후보 2: 계정 호스트가 달라서 매칭 실패(예: 'dev_user'@'localhost'만 있는데 127.0.0.1로 접속)
  • 해결 순서:
    1. CLI에서 mysql -u dev_user -p로 먼저 성공시키기
    2. Workbench Hostname을 localhost127.0.0.1로 바꿔서 재시도
    3. 그래도 안 되면 SELECT USER();로 “내가 어떤 사용자로 들어왔는지” 확인

5-2) Error 2003: Can’t connect to MySQL server…

  • 원인: 서버가 꺼져 있음(가장 흔함) / 포트가 다름 / 방화벽 / 도커/다른 DB가 점유
  • 해결: Step 0로 돌아가 “서버 running”부터 확보 → 그 다음 포트 점검

5-3) 3306 포트 충돌(초보자 멘붕 1순위)

[Windows] 누가 3306을 쓰는지 확인

netstat -a -n -o | findstr 3306

마지막 숫자가 PID입니다.

  • 작업 관리자 → 세부 정보 탭 → PID 열에서 찾아 종료
  • 또는 강제 종료: taskkill /F /PID (PID번호)

[Mac]

lsof -i :3306

[Linux]

sudo ss -lntp | grep 3306

충돌이 해결되지 않으면, MySQL 포트를 3307로 바꾸는 것도 방법입니다. (단, Workbench/앱 설정에서도 Port를 동일하게 바꿔야 합니다)


결론

이제 여러분은 “설치 후 접속”에서 가장 중요한 것들을 끝냈습니다. 마지막으로 아래 3가지만 기억하면, 대부분의 접속 문제가 스스로 해결됩니다.

  1. 서버가 켜져 있는지(running) 먼저 확인
  2. Host/Port를 명확히(특히 localhost vs 127.0.0.1)
  3. root 대신 dev_user로 개발 습관 잡기

이제 아래를 한 번 실행해 보세요. “내 첫 DB”가 만들어집니다.

CREATE DATABASE my_first_db;
SHOW DATABASES;

자주 묻는 질문 (FAQ)

Q1. ‘mysql’은(는) 내부 또는 외부 명령어가 아니라고 떠요.

A. Windows라면 PATH에 ...MySQL Server ...\bin이 등록되지 않았을 가능성이 큽니다. where mysql로 확인 후, Step 1을 따라 PATH 등록 → 터미널을 새로 열고 재시도하세요. (Mac/Linux는 which mysql로 확인합니다)

Q2. Workbench는 되는데 CLI는 안 되거나(또는 반대) 그래요.

A. 보통 Hostname/Port가 다릅니다. Workbench 연결의 Hostname이 localhost인지 127.0.0.1인지 확인하고, CLI도 동일하게 -h 127.0.0.1 -P 3306를 명시해서 테스트해 보세요.

Q3. 비밀번호 입력할 때 화면에 아무 것도 안 보여요. 고장인가요?

A. 정상입니다. 보안상 입력이 화면에 표시되지 않습니다(별표가 안 뜰 수도 정상). 입력 후 엔터를 치면 됩니다.

Q4. Error 1045가 계속 떠요.

A. 비밀번호뿐 아니라 “계정 호스트” 문제일 수 있습니다. 예: 'dev_user'@'localhost'만 만들어 놓고 127.0.0.1로 접속하면 실패할 수 있습니다. Hostname을 바꿔가며 테스트하고, 필요하면 SHOW GRANTS FOR ...로 권한을 확인하세요.

Q5. Linux에서 root로 Workbench 접속이 안 돼요.

A. Ubuntu/Debian 계열은 root가 비밀번호 로그인 대신 관리자 권한(sudo mysql)으로만 들어가지는 설정일 수 있습니다. 이 경우 Workbench용으로 별도 사용자(dev_user)를 만들어 비밀번호 로그인으로 쓰는 게 가장 간단하고 안전합니다.

Q6. 비밀번호를 잊어버렸어요. skip-grant-tables로 초기화하면 된다던데요?

A. 가능은 하지만 보안적으로 위험한 상태를 만들 수 있습니다. 학습 초기에 데이터가 없다면 재설치가 빠를 수 있고, 데이터가 있다면 반드시 공식 가이드 기반으로 매우 신중하게 진행하세요.

이 글은 어떠셨나요? 자유롭게 의견을 남겨주세요! 💬