> ## Documentation Index
> Fetch the complete documentation index at: https://villagesql.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 이 튜토리얼을 위한 서버 설치

> 이 튜토리얼의 모든 수업에는 실행 중인 MySQL 또는 VillageSQL 서버가 필요합니다. 서버를 얻는 3가지 방법 중 1가지를 고른 다음, 연결할 수 있는지 확인하세요.

> [card] [VillageSQL is a drop-in replacement for MySQL with extensions.](https://villagesql.com/docs/en/8.4/stable/install-server.md)
>
> All examples on this page work on VillageSQL. Install Now →

실행 중인 서버와 그 서버에 말을 걸 수 있는 클라이언트가 필요합니다. MySQL 8.4 이상이면 어느 서버든 동작하고, 확장 프레임워크를 더한 MySQL인 VillageSQL도 마찬가지입니다. 여기의 어떤 수업도 확장을 사용하지 않으므로, 어느 쪽이든 괜찮습니다.

## 서버를 실행할 방법 고르기

| 방법 | 알맞은 경우 | 갈 곳 |
| - | - | - |
| Docker | 써 보고 버리기 | [Docker에서 MySQL](https://villagesql.com/docs/ko/guides/mysql-on-docker.md) |
| VillageSQL 설치 프로그램 | 내 컴퓨터에 계속 두는 서버 | [설치](https://villagesql.com/docs/ko/8.4/stable/install-server.md) |
| 이미 운영 중인 서버 | MySQL 8.4 이상을 설치한 모든 사람 | 할 일 없음 |

그 페이지들은 각각 실행 중인 서버로 끝납니다. 서버가 생기면 여기로 돌아오세요.

## 클라이언트 얻기

이 튜토리얼은 명령줄 클라이언트인 `mysql`로 서버를 다룹니다. 클라이언트가 어디서 오는지는 어느 방법을 택했는지에 따라 다릅니다:

* **설치 프로그램.** 설치 프로그램은 클라이언트를 `~/.villagesql/`에 두지만 `PATH`에는 넣지 않습니다. `~/.villagesql/credentials.txt`에 저장된 `Connect` 명령을 실행한 다음(root 비밀번호도 같은 파일에 있습니다), 아래 명령 대신 `mysql>` 프롬프트에서 `SELECT VERSION();`을 실행하세요.
* **기존 서버.** 클라이언트는 서버와 함께 왔으므로, 이미 가지고 있습니다.
* **Docker.** 클라이언트는 내 컴퓨터가 아니라 컨테이너 안에 있습니다. `docker exec -it CONTAINER_NAME mysql -u root -p`로 접근하거나, 로컬에 클라이언트를 설치하고 컨테이너가 공개하는 포트로 연결하세요.

## 연결할 수 있는지 확인

이것을 실행하고, `root`에 비밀번호가 없으면 비밀번호 프롬프트에서 Return을 누르세요:

```bash theme={null}
mysql -u root -p -e "SELECT VERSION();"
```

```text theme={null}
Enter password:
+-----------------------------------------+
| VERSION()                               |
+-----------------------------------------+
| 8.4.11-villagesql-0.0.7-dev-c857bdf32ce |
+-----------------------------------------+
```

버전 문자열은 다를 것입니다. 중요한 것은 버전이 돌아왔다는 점인데, 그것은 클라이언트가 서버에 닿아 로그인했다는 뜻이기 때문입니다.

## 연결되지 않을 때

아래의 두 오류는 모두 클라이언트가 서버에 전혀 닿지 못했다는 뜻이므로, 어느 쪽도 비밀번호 문제가 아닙니다. 동작하는 설정에서도 클라이언트를 엉뚱한 곳으로 향하게 하면 어느 쪽이든 재현할 수 있습니다.

뒤에 아무것도 없는 소켓 경로:

```bash theme={null}
mysql -S /tmp/mysql.sock.missing -u root -p -e "SELECT VERSION();"
```

```text theme={null}
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock.missing' (2)
```

아무것도 수신 대기하지 않는 포트:

```bash theme={null}
mysql -h 127.0.0.1 -P 3999 -u root -p -e "SELECT VERSION();"
```

```text theme={null}
Enter password:
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1:3999' (61)
```

맨 뒤 괄호 안의 숫자는 운영 체제 자체의 오류 번호이므로, macOS와 Linux에서 다를 수 있습니다. 소켓 없음 번호는 둘 다 2이고, 연결 거부 번호는 macOS에서 61, Linux에서 111입니다. 읽어야 할 부분은 소켓 경로나 호스트와 포트인데, 그것이 클라이언트가 어디를 찾아봤는지 알려주기 때문입니다. 그 위치가 틀렸으면 고치세요. 맞다면 서버가 실행되고 있지 않은 것입니다.

## 함께 보기

* [설치](https://villagesql.com/docs/ko/8.4/stable/install-server.md) — VillageSQL 설치와 연결
* [Docker에서 MySQL](https://villagesql.com/docs/ko/guides/mysql-on-docker.md) — 컨테이너에서 서버 실행
* [흔한 MySQL 오류](https://villagesql.com/docs/ko/guides/common-mysql-errors.md) — 다른 연결 오류의 뜻


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.