返回

如何在 ASP.NET API 中连接 MySQL 数据库?

mysql

## 在 ASP.NET API 中连接 MySQL 数据库

对于希望将 ASP.NET API 与 Docker 容器中运行的 MySQL 数据库连接的开发人员来说,这是一个常见且关键的任务。本指南将逐步引导你完成此过程,确保顺利连接。

### 先决条件

  • Docker 已安装和配置
  • Microsoft SQL Server Management Studio 已安装
  • ASP.NET API 解决方案

### 步骤 1:配置数据库容器

Docker Compose

version: '3.4'

services:
  database:
    container_name: DB
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=1234
      - MYSQL_DATABASE=db
      - MYSQL_USER=user
      - MYSQL_PASSWORD=secretpassword
      - MYSQL_ALLOW_EMPTY_PASSWORD=1
    volumes:
      - dbdata:/var/lib/mysql
      - ./MySqlScripts/init.sql:/docker-entrypoint-initdb.d/1.sql:ro
    restart: on-failure
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      timeout: 20s
      retries: 10
    ports:
      - 3306:3306
    command: --default-authentication-plugin=mysql_native_password

步骤 2:配置 API 容器

Dockerfile

FROM microsoft/aspnetcore-build:2.1

WORKDIR /app

COPY . ./

RUN dotnet restore

RUN dotnet publish -c Release -o out

ENV ASPNETCORE_URLS http://*:8080

ENTRYPOINT ["dotnet", "out/API.dll"]

步骤 3:连接 MySQL 数据库

在 ASP.NET API 项目中使用以下代码连接数据库:

using MySql.Data.MySqlClient;

namespace API.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        private readonly MySqlConnection _connectionString = new MySqlConnection("Server=DB;Database=db;User ID=user;Password=secretpassword");

        // ...
    }
}

### 故障排除

  • 确保 MySQL 容器正在运行并可访问: 运行 docker ps 检查容器状态。
  • 检查连接字符串: 确保其包含正确的数据库名称、用户名和密码。
  • API 容器与 MySQL 容器网络问题: 检查容器是否在同一网络中。
  • 端口映射问题: 确保 API 容器的端口已映射到 MySQL 容器的端口。

### 常见问题解答

  1. 为什么我无法连接到数据库? 检查连接字符串,确保它正确且包含必要的信息。
  2. 如何检查容器状态? 使用 docker inspect 命令检查容器的配置和状态。
  3. API 容器需要哪些环境变量? 需要以下环境变量:MYSQL_HOSTMYSQL_PORTMYSQL_USERMYSQL_PASSWORDMYSQL_DATABASE
  4. 如何使用 Docker Compose 运行容器? 运行 docker-compose up 命令。
  5. API 容器如何访问 MySQL 容器? API 容器通过 docker 网络与其连接。