人人都会AI编程

2.1 安装部署:Linux/Windows 环境安装、Docker 容器化部署

更新时间:2026-07-10

安装是使用 MySQL 的第一步。根据不同的操作系统和部署场景,安装方式也会有所不同。本节会覆盖 Linux、Windows 和 Docker 三种最常见的部署方式,以 MySQL 8.0 为主线,同时指出与 5.7 的关键差异,目标是让你在任何环境下都能 30 分钟内跑起一个可用的 MySQL 实例。

2.1.1 安装前的考量

在动手之前,有几个选择值得先明确:

  • 版本选择新项目直接用 MySQL 8.0,它的性能、安全性和 SQL 能力相比 5.7 有显著提升(如窗口函数、CTE、原子 DDL、直方图等)。如果接手的是老项目且依赖 5.7 若干行为(如默认 utf8mb3 字符集),则保留 5.7,但应规划升级。注意,8.0 将默认身份认证插件改为 caching_sha2_password,部分老旧的客户端或驱动(如 5.X 版本的 Navicat、老版 JDBC 驱动)可能无法直接连接,需要配置或降级为 mysql_native_password
  • 部署环境:开发测试环境优先用 Docker,启动快、隔离好、随时可销毁重建;生产环境建议用物理机或云主机原生安装,配合精细化调优;本地开发可用 Windows 或 macOS 原生服务,也可用 Docker。
  • 硬件要求:MySQL 本身对资源要求不高,256MB 内存即可运行,但生产环境建议至少 2 核 4GB 以上,且规划好 innodb_buffer_pool_size 的内存空间。

2.1.2 Linux 环境安装(以 CentOS 8 / Ubuntu 20.04 为例)

Linux 是生产环境的主流选择。因为各发行版默认仓库中的 MySQL 往往版本较旧,所以我们使用 MySQL 官方维护的 YUM / APT 仓库,获取最新的版本和补丁。

CentOS / RHEL 系列

  1. 添加 MySQL 官方 YUM 仓库

MySQL 官方仓库页面 下载对应的 rpm 包,或者直接执行:

   wget https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm
   sudo rpm -ivh mysql80-community-release-el8-1.noarch.rpm
   

> 如果想安装 5.7,可以先 yum repolist all | grep mysql 查看仓库,然后 sudo yum-config-manager --disable mysql80-community--enable mysql57-community,再安装。

  1. 安装 MySQL Server
   sudo yum install mysql-community-server -y
   

安装过程中会自动创建 mysql 用户和组。

  1. 启动服务并获取初始密码
   sudo systemctl start mysqld
   sudo systemctl enable mysqld   # 设置开机自启
   

MySQL 8.0 安装后会生成一个临时密码,存放在日志文件中:

   sudo grep 'temporary password' /var/log/mysqld.log
   

记下这个密码,接下来要用。

  1. 安全初始化

运行安全配置脚本,按照提示修改 root 密码、移除匿名用户、禁止 root 远程登录等:

   sudo mysql_secure_installation
   

输入上面查到的临时密码,然后设置新的 root 密码。密码策略默认要求大小写字母、数字和特殊字符,长度至少 8 位。如果仅是本地开发环境,可以在后续自行降低策略。

  1. 开放远程访问(可选)

需要远程连接时,先登录 MySQL:

   mysql -u root -p
   

然后执行授权(注意,这会将 root 开放给所有主机,生产环境不建议,应创建专用用户并限制 IP):

   USE mysql;
   UPDATE user SET host='%' WHERE user='root';
   FLUSH PRIVILEGES;
   

同时确保防火墙开放 3306 端口(或你自定义的端口):

   sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
   sudo firewall-cmd --reload
   

Ubuntu / Debian 系列

  1. 添加 MySQL 官方 APT 仓库

下载并安装 repository 配置包:

   wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb
   sudo dpkg -i mysql-apt-config_0.8.22-1_all.deb
   

在出现的图形界面中选择 MySQL 8.0(或 5.7),然后 OK 退出。

  1. 更新包索引并安装
   sudo apt update
   sudo apt install mysql-server -y
   
  1. 启动与获取临时密码
   sudo systemctl start mysql
   sudo systemctl enable mysql
   

临时密码可能直接在安装过程弹出的界面中显示,也可以查看日志:

   sudo grep 'temporary password' /var/log/mysql/error.log
   
  1. 安全初始化
   sudo mysql_secure_installation
   

操作与 CentOS 完全一致。

安装后核心配置文件位置/etc/my.cnf(CentOS)或 /etc/mysql/mysql.conf.d/mysqld.cnf(Ubuntu)。建议顺手调整一下字符集和默认存储引擎:

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default-storage-engine=INNODB

调整认证插件(可选)

如果遇到客户端连接报错 Authentication plugin 'caching_sha2_password' cannot be loaded,可以在 MySQL 中将相应用户的插件改回旧版:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'YourPassword';

2.1.3 Windows 环境安装

Windows 下安装主要用于本地开发和调试。

  1. 访问 MySQL 官方下载页面,选择 Windows 平台,下载 MSI 安装包。推荐选择完整安装包(通常 mysql-installer-community-8.0.x.x.msi)。
  2. 双击运行安装程序,选择 Developer DefaultServer only
  3. 在安装过程中,安装向导会提示你配置:
  • 端口(默认 3306)
  • 认证插件(建议选择 Use Strong Password Encryption for Authentication (RECOMMENDED),即 caching_sha2_password;如果使用老旧的工具,可选中下方的 Legacy 选项)
  • 设置 root 密码
  • 配置 Windows 服务名(默认 MySQL80),并建议将 MySQL Server 的 bin 目录添加到系统 PATH 中。
  1. 完成安装后,MySQL 会作为 Windows 服务自动启动。你可以通过 services.msc 管理,或使用命令行 net stop MySQL80net start MySQL80
  2. 环境变量:若安装时未自动添加 PATH,可手动将 C:\Program Files\MySQL\MySQL Server 8.0\bin 加入系统变量 PATH,之后即可在 CMD 或 PowerShell 中直接使用 mysql -u root -p

Windows 下配置文件默认路径为 C:\ProgramData\MySQL\MySQL Server 8.0\my.ini,修改后需重启服务生效。

2.1.4 Docker 容器化部署

Docker 方式非常适合本地开发、测试环境和快速体验,几分钟内就能拉起一个干净的 MySQL 实例。

基础启动命令

执行以下命令即可启动一个 8.0 版本的 MySQL 容器,并设置 root 密码为 root

docker run -d \
  --name mysql-test \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=root \
  mysql:8.0
  • -d 后台运行
  • --name mysql-test 容器名称
  • -p 3306:3306 将容器 3306 端口映射到宿主机 3306
  • -e MYSQL_ROOT_PASSWORD=root 设置环境变量,指定 root 密码

连接容器内的 MySQL:

docker exec -it mysql-test mysql -u root -p

生产可用的 docker-compose 配置

生产或需要持久化数据的场景,必须挂载数据卷和配置文件。创建一个 docker-compose.yml

version: '3.8'
services:
  mysql:
    image: mysql:8.0
    container_name: mysql-prod
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: Str0ngPassw0rd
      MYSQL_DATABASE: mydb
      MYSQL_USER: myuser
      MYSQL_PASSWORD: mypass
    volumes:
      - ./mysql/data:/var/lib/mysql          # 数据持久化
      - ./mysql/conf:/etc/mysql/conf.d       # 自定义配置
      - ./mysql/init:/docker-entrypoint-initdb.d # 初始化脚本
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
      - --default-authentication-plugin=mysql_native_password  # 兼容旧客户端

主要说明:

  • 数据卷 ./mysql/data 确保容器销毁后数据不丢。
  • ./mysql/conf 中可以放置 .cnf 文件,例如 my-custom.cnf,里面可以写缓冲池大小等参数。
  • ./mysql/init 放入 .sql.sh 脚本,容器初次启动时会自动执行,用于建表或导入数据。
  • --default-authentication-plugin 可根据需要选择。

启动:

docker-compose up -d

进入容器:

docker exec -it mysql-prod mysql -u root -p

版本切换

只需修改 image: mysql:5.7 即可使用 5.7 版本,注意 5.7 环境变量 MYSQL_ROOT_PASSWORD 等同样有效。

2.1.5 安装后的验证与初步调优建议

无论哪种方式安装完成,建议立即做个快速验证:

mysql -u root -p

进入 MySQL 后执行:

SELECT VERSION();
SHOW DATABASES;
STATUS;

确认版本号和字符集等信息。

接下来可以根据物理内存情况,简单设置一下 innodb_buffer_pool_size。以 8GB 内存的服务器为例,你可以在配置文件里加入:

[mysqld]
innodb_buffer_pool_size=4G

Docker 容器可通过启动参数 --innodb-buffer-pool-size=4G 或者自定义配置文件来设置。

通过这些步骤,你应该已经拥有了一个可连接、可持久化、可自定义的 MySQL 实例。后面的章节我们会进一步优化参数、创建表结构并执行查询,但一切的起点都是一次成功的安装。