dotnet core로 Mysql을 연결해보겠습니다.
[환경 설정 파일 생성(.env)]

프로젝트 루트 폴더에 .env 파일을 생성해줍니다.

아래와 같이 MySQL 설정 값을 작성합니다.
MYSQL_HOST=[호스트명]
MYSQL_PORT=[포트]
MYSQL_USER=[유저명]
MYSQL_PASSWORD=[비밀번호]
MYSQL_DB=[사용DB명]
※네트워크 호스트명은 직접 연결시에는 IP주소를, 도커 사용 시에는 도커 네트워크 이름을 넣으시면 됩니다.
저의 경우는 Docker 환경이므로 도커 네트워크 이름인 pp-mysql로 작성하였습니다.
[+ Mysql 유저 추가하는 방법]
root 계정을 그대로 사용하는 것은 보안, 운영 측면에서 좋지 않습니다.
root 계정으로 사용하면 안되는 이유
- root는 전체 권한을 갖고 있어 유출시 데이터 베이스 전체가 위험
- 모든 작업이 가능하므로 실수로도 치명적 사고 발생 가능
- 누가 어떤 작업을 했는지 추적 가능
- 특정 서비스만 접근하도록 접근 제한 가능
- 문제 발생시 원인 파악 쉬움
따라서 반드시 별도 사용자 계정을 생성하여 사용해야 합니다.
1. 우선 Mysql에 접속해줍니다.
편한 방법으로 접속하면 됩니다.
저는 MysqlShell로 접속하겠습니다.
+ Mysql Shell 다운로드
https://dev.mysql.com/downloads/shell/
MySQL :: Download MySQL Shell
MySQL Shell 9.5.0 Innovation The MySQL Shell is an interactive Javascript, Python, or SQL interface supporting development and administration for the MySQL Server and is a component of the MySQL Server. You can use the MySQL Shell to perform data queries a
dev.mysql.com
Mysql Shell로 접속 방법
mysqlsh --uri root@127.0.0.1:3306
2. 유저 생성
CREATE USER '[유저이름]'@'%' IDENTIFIED BY '[비밀번호]';
3. 권한 생성
GRANT [부여할권한] ON [DB명].[테이블명] TO '[유저명]'@'[허용접속IP]';
저의 경우는 아래와 같습니다.
GRANT ALL PRIVILEGES ON ppdb.* TO 'gameuser'@'%';
4. 권한 적용
FLUSH PRIVILEGES;
[Nuget 패키지 설치]
.env 파일로 환경설정을 읽어온 후, Mysql에 연결하기 위해서는 MySqlConnector와 DotNetEnv 패키지의 설치가 필요합니다.
1. MySqlConnector 설치

Visual Studio에서 솔루션용 NuGet패키지 관리를 클릭합니다.


MySQL Connector를 검색하여 설치합니다.
2. DotNetEnv 설치


위와 같이 NuGet패키지에서 DotNetEnv를 검색하여 설치해줍니다.
[.Env 파일 로드]

Programs.cs 파일에 아래 코드를 추가하여 .env 파일을 읽어오도록 합니다.
//.env 파일 로드
DotNetEnv.Env.Load();
[Mysql 연결]

Infrastructure 폴더를 생성하여 MysqlExtensions.cs 파일을 생성하였습니다.


1. 설정값 불러오기
.env 파일의 값은 config["변수명"] 형태로 가져올 수 있습니다.
예) 호스트 값 읽기 :
var host = config["MYSQL_HOST"];
2. connection String 구성
Mysql 연결 문자열은 아래 형태를 사용합니다.
$"Server={host};Port={port};Database={db};User={user};Password={pw};";
3. MySQL 서비스를 의존성 주입으로 등록
service.AddScoped<MySqlConnection>(_ =>
new MySqlConnection(connectionString)
);
- AddTransient : 요청시마다 새로운 MysqlConnection 인스턴스가 생성됨
- AddScoped : 요청단위로 하나의 커넥션을 공유함
4. Programs.cs에서 서비스 등록 호출

builder.Services.AddMysql(builder.Configuration);
다음 포스트에서 이어집니다.
이하 코드 전문
-. MysqlExtensions.cs
using MySqlConnector;
namespace PPProject.Infrastructure
{
public static class MysqlExtensions
{
public static IServiceCollection AddMysql(this IServiceCollection service, IConfiguration config)
{
var host = config["MYSQL_HOST"];
var port = config["MYSQL_PORT"];
var user = config["MYSQL_USER"];
var pw = config["MYSQL_PASSWORD"];
var db = config["MYSQL_DB"];
var connectionString = $"Server={host};Port={port};Database={db};User={user};Password={pw};";
service.AddScoped<MySqlConnection>(_ =>
new MySqlConnection(connectionString)
);
return service;
}
}
}
-. .env
MYSQL_HOST=pp-mysql
MYSQL_PORT=3306
MYSQL_USER=gameuser
MYSQL_PASSWORD=qwer1234!
MYSQL_DB=ppdb
'게임 웹서버 만들기' 카테고리의 다른 글
| 패킷 암호화 / 복호화 - 게임 웹서버 만들기 7 (0) | 2025.12.08 |
|---|---|
| 게스트 로그인, Dapper, IDGen, 서비스팩토리 - 게임 웹서버 만들기 6 (0) | 2025.12.07 |
| 패킷 파라미터 유효성 검증 추가 - 게임 웹서버 만들기 4 (0) | 2025.12.03 |
| Api 응답 양식 결정 - 게임 웹서버 만들기 3 (0) | 2025.12.02 |
| 프로젝트 생성, Postman으로 테스트하기 - 게임 웹서버 만들기 2 (0) | 2025.11.30 |