MySQL 8 安装部署指南

zjc 于 2026-08-16 发布

下载地址/官网:MySQL Community Server

MySQL 8 用来保存业务数据和邮件发送记录。这套项目需要数据库 spring_cloud_alibaba,应用通过 spring_cloud_alibaba 用户连接,并且 JDBC URL 使用 sslMode=REQUIRED。本文从零开始安装,并创建这套项目可用的数据库和账号。

本文按“单机部署”写,适合同一台服务器上运行 MySQL 和微服务的场景。不要把 3306 端口直接暴露到公网。

Windows 安装 MySQL 8

  1. 打开 MySQL Community Server 下载页
  2. 下载 mysql-installer-community,建议选择体积更大的完整版,包含配置向导。
  3. 打开安装器,选择 Server only,点击 Execute
  4. 类型选择 Standalone MySQL Server
  5. 网络配置保持默认端口 3306
  6. 认证方式选择默认的 Use Strong Password Encryption
  7. 给 root 设置一个强密码并记住。这个密码只给 MySQL 运维使用,不建议直接写进微服务配置。
  8. Windows Service 保持默认即可,服务名一般是 MySQL80
  9. 完成安装后,打开 PowerShell,验证服务状态:
Get-Service MySQL80

看到 Running 即为正常。

  1. 连接 MySQL。如果 mysql 不在 PATH 里,常见目录是:
C:\Program Files\MySQL\MySQL Server 8.0\bin

可以在该目录下执行:

.\mysql.exe -u root -p

也可以把 bin 目录加入系统 PATH,之后直接执行:

mysql -u root -p

Ubuntu 安装 MySQL 8

  1. 更新软件源:
sudo apt update
  1. 安装 MySQL Server:
sudo apt install -y mysql-server
  1. 启动并设置开机自启:
sudo systemctl enable --now mysql
  1. 查看状态:
sudo systemctl status mysql --no-pager

看到 active (running) 即为正常。

  1. Ubuntu 安装后 root 默认使用系统用户认证,先进入 MySQL:
sudo mysql
  1. 给 root 设置密码,之后可以用密码登录:
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '换成你的root强密码';
FLUSH PRIVILEGES;
EXIT;
  1. 使用密码验证:
mysql -u root -p

macOS 安装 MySQL 8

  1. 安装 Homebrew 后执行:
brew install mysql@8.4
brew link --force mysql@8.4
  1. 启动 MySQL:
brew services start mysql@8.4
  1. 查看状态:
brew services list
  1. 确认客户端版本:
mysql -V
  1. 首次连接。Homebrew 安装的 MySQL 初始 root 密码通常为空:
mysql -u root -p

提示密码时直接回车。

  1. 设置 root 密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '换成你的root强密码';
FLUSH PRIVILEGES;
EXIT;

创建项目数据库和账号

三个系统进入 MySQL 后,执行同样的 SQL。

  1. 创建数据库:
CREATE DATABASE spring_cloud_alibaba
  DEFAULT CHARACTER SET utf8mb4
  COLLATE utf8mb4_0900_ai_ci;
  1. 创建应用账号。把 换成强密码 替换成自己的密码:
CREATE USER 'spring_cloud_alibaba'@'localhost'
  IDENTIFIED WITH caching_sha2_password BY '换成强密码';
  1. 授权。单机部署时只授权 spring_cloud_alibaba 这一个库:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX, DROP, REFERENCES
  ON spring_cloud_alibaba.*
  TO 'spring_cloud_alibaba'@'localhost';

FLUSH PRIVILEGES;

如果初始化表结构由外部 SQL 脚本执行,可以临时把 CREATEALTERDROP 授权给执行脚本的用户;日常运行建议只保留 SELECTINSERTUPDATEDELETE

  1. 使用新账号验证:
mysql -u spring_cloud_alibaba -p
  1. 登录后确认当前数据库可访问:
SHOW DATABASES;
USE spring_cloud_alibaba;
SHOW TABLES;

确认 SSL 可用

这套项目的 JDBC URL 使用 sslMode=REQUIRED,所以 MySQL 必须启用 SSL。MySQL 8 默认会在首次启动时自动生成证书,一般不需要手动创建。

登录 MySQL 后执行:

SHOW VARIABLES LIKE 'have_ssl';
SHOW VARIABLES LIKE 'ssl_ca';

期望结果:

have_ssl    YES

也可以执行:

STATUS;

输出里的连接信息包含 SSL: Cipher in use is ...,说明当前客户端连接已经走了 SSL。

接入微服务配置

单机部署时,项目生产环境的连接地址保持为 127.0.0.1:3306

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/spring_cloud_alibaba?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&sslMode=REQUIRED
    username: spring_cloud_alibaba
    password: ENC(你的Jasypt密文)

https://github.com/springvortex/spring-cloud-alibaba/blob/release/v1.0.0/service-provider/src/main/resources/application-prod.yaml

密码建议使用 Jasypt 加密,不要把明文密码提交到 Git。

数据库和应用不在同一台机器

优先做法是创建一个限定来源 IP 的账号,不要使用 % 通配所有主机:

CREATE USER 'spring_cloud_alibaba'@'应用服务器IP'
  IDENTIFIED WITH caching_sha2_password BY '换成强密码';

GRANT SELECT, INSERT, UPDATE, DELETE
  ON spring_cloud_alibaba.*
  TO 'spring_cloud_alibaba'@'应用服务器IP';

FLUSH PRIVILEGES;

然后修改 MySQL 监听地址和防火墙,只允许应用服务器访问 3306。

Ubuntu 查看监听地址:

ss -lntp | grep 3306

如果需要远程访问,编辑 /etc/mysql/mysql.conf.d/mysqld.cnf,将:

bind-address = 127.0.0.1

改为:

bind-address = 0.0.0.0
mysqlx-bind-address = 127.0.0.1

重启 MySQL:

sudo systemctl restart mysql

改成 0.0.0.0 只是表示 MySQL 监听所有网卡,不代表可以裸奔公网。必须配合安全组、防火墙和限定来源 IP 的账号使用。

备份与恢复

备份:

mysqldump -u root -p \
  --databases spring_cloud_alibaba \
  --single-transaction \
  --routines --triggers \
  > spring_cloud_alibaba.sql

恢复:

mysql -u root -p < spring_cloud_alibaba.sql

建议把备份文件存到另一台机器或对象存储,不要只留在数据库服务器本机。

常见问题

Access denied for user

确认三件事:用户名和密码正确;用户 Host 匹配;账号有目标库权限。单机部署用 localhost,远程部署要创建对应应用服务器 IP 的用户。

Public Key Retrieval is not allowed

常见于 MySQL 8 的 caching_sha2_password 认证。既然项目要求 SSL,保持 sslMode=REQUIRED 即可,不要关闭 SSL 后用 allowPublicKeyRetrieval=true 绕过。

SSL connection error

执行 SHOW VARIABLES LIKE 'have_ssl'; 确认为 YES。如果证书缺失,备份 MySQL 数据后重新生成 SSL 证书,或参考 MySQL 官方文档修复证书配置。

应用连不上 127.0.0.1

先在数据库服务器执行:

mysql -h 127.0.0.1 -P 3306 -u spring_cloud_alibaba -p

如果这个命令能连上,说明 MySQL 正常,问题在应用配置、Jasypt 密钥或应用进程环境。

部署完成检查

SELECT VERSION();
SHOW VARIABLES LIKE 'have_ssl';
SHOW DATABASES LIKE 'spring_cloud_alibaba';
SHOW GRANTS FOR 'spring_cloud_alibaba'@'localhost';

四条都符合预期后,这台机器的 MySQL 部分就完成了。