目标
本文档从头到尾介绍如何使用官方 Oracle APT 方法在 Debian 13 上安装 MySQL 8.4,然后说明如何:
- 验证 MySQL 是否正常运行
- 加固实例安全
- 调整基础配置
- 根据需要迁移数据目录
- 使用
systemd管理服务
关于 Debian 13 的重要说明
截至 2026 年 4 月 13 日,MySQL APT 仓库已发布适用于 Debian 13 trixie 的软件包,包括 mysql-8.4-lts。
- Debian 13 可以直接使用 Oracle MySQL 仓库
- 推荐方法仍然是 MySQL APT 仓库
- 如果目标是 Oracle MySQL 8.4,则无需使用 Debian 原生软件包
推荐架构
为了进行干净的安装:
- 最小化 Debian 13 操作系统
- 正确的主机名
- 静态 IP
- 一致的时区
- 如果机器用于生产环境,应使用单独的数据磁盘
合理的最低配置:
| 组件 | 最低要求 |
|---|---|
| vCPU | 2 |
| 内存 | 4 GB |
| 系统盘 | 20 GB |
| 数据盘 | 50 GB+(独立数据目录) |
1. 准备 Debian 13
apt-get update
apt-get -y upgrade
apt-get install -y \
curl wget gnupg lsb-release ca-certificates \
apt-transport-https net-tools dnsutils sudo
警告:software-properties-common 软件包在 Debian 13 上不存在(它是 Ubuntu 的软件包)。请勿包含它。
timedatectl set-timezone Europe/Paris
cat /etc/os-release
验证 VERSION_CODENAME=trixie。
2. 添加 Oracle MySQL APT 仓库
方案 A — 使用 mysql-apt-config(官方方法)
cd /tmp
wget https://dev.mysql.com/get/mysql-apt-config_0.8.36-1_all.deb
dpkg -i mysql-apt-config_0.8.36-1_all.deb
apt-get update
方案 B — 手动 APT 文件(推荐)
重要提示:RPM-GPG-KEY-mysql-2023 GPG 密钥已于 2025 年 10 月过期。请使用 RPM-GPG-KEY-mysql-2025。
mkdir -p /etc/apt/keyrings
wget -O /etc/apt/keyrings/mysql.gpg https://repo.mysql.com/RPM-GPG-KEY-mysql-2025
cat >/etc/apt/sources.list.d/mysql.list <<'EOF'
deb [signed-by=/etc/apt/keyrings/mysql.gpg] http://repo.mysql.com/apt/debian/ trixie mysql-8.4-lts mysql-tools
EOF
apt-get update
3. 安装 MySQL 8.4
DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server
这将安装服务端(mysql-community-server)、客户端(mysql-community-client)、插件和公共文件。
dpkg -l | grep -E 'mysql-(server|client|community)'
4. 验证服务
systemctl status mysql --no-pager
systemctl is-active mysql
systemctl is-enabled mysql
mysql --version
mysql -Nse "SELECT VERSION();"
5. 首次连接
使用 DEBIAN_FRONTEND=noninteractive,Debian 13 上的 MySQL 8.4 通过 Unix socket 配置 root 认证(无密码):
mysql
或:
sudo mysql
6. 加固实例安全
使用官方工具:
mysql_secure_installation
或手动操作:
DELETE FROM mysql.user WHERE User='';
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
FLUSH PRIVILEGES;
7. 重要文件位置
| 文件 | 路径 |
|---|---|
| 配置文件 | /etc/mysql/ |
| 服务端二进制文件 | /usr/sbin/mysqld |
| 客户端 | /usr/bin/mysql |
| 数据目录 | /var/lib/mysql |
| systemd 服务 | mysql.service |
| 自定义配置 | /etc/mysql/mysql.conf.d/zz-*.cnf |
8. 推荐的基础配置
添加专用文件而非修改现有文件:
cat >/etc/mysql/mysql.conf.d/zz-custom.cnf <<'EOF'
[mysqld]
bind-address = 0.0.0.0
mysqlx-bind-address = 0.0.0.0
skip_name_resolve = ON
max_connections = 200
innodb_buffer_pool_size = 1G
log_error_verbosity = 2
EOF
systemctl restart mysql
验证:
mysql -Nse "SHOW VARIABLES LIKE 'bind_address';"
mysql -Nse "SHOW VARIABLES LIKE 'innodb_buffer_pool_size';"
9. 开放端口 3306
如果服务器需要接受远程连接:
CREATE USER 'admin'@'10.68.68.%' IDENTIFIED BY 'StrongPasswordHere';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'10.68.68.%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
ss -lntp | grep 3306
10. 将数据目录迁移到 /srv/mysql
systemctl stop mysql
mkdir -p /srv/mysql
rsync -aHAX /var/lib/mysql/ /srv/mysql/
chown -R mysql:mysql /srv/mysql
chmod 750 /srv/mysql
cat >/etc/mysql/mysql.conf.d/zz-datadir.cnf <<'EOF'
[mysqld]
datadir = /srv/mysql
EOF
systemctl start mysql
mysql -Nse "SELECT @@datadir;"
预期结果:/srv/mysql/
11. 启用 performance_schema
在 MySQL 8.4.8 上默认已启用:
mysql -Nse "SELECT @@performance_schema;"
如需手动启用:
cat >/etc/mysql/mysql.conf.d/zz-performance.cnf <<'EOF'
[mysqld]
performance_schema = ON
EOF
systemctl restart mysql
12. 创建专用管理员用户
避免在所有操作中使用 root:
CREATE USER 'dba'@'10.68.68.%' IDENTIFIED BY 'VeryStrongPassword';
GRANT ALL PRIVILEGES ON *.* TO 'dba'@'10.68.68.%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
13. 备份配置
tar czf /root/mysql-config-backup.tar.gz /etc/mysql
dpkg -l | grep mysql > /root/mysql-packages.txt
14. 常用操作命令
systemctl start mysql
systemctl stop mysql
systemctl restart mysql
journalctl -u mysql -n 100 --no-pager
15. 最终验证
systemctl is-active mysql
mysql --version
mysql -Nse "SELECT VERSION();"
mysql -Nse "SELECT @@datadir;"
mysql -Nse "SELECT @@performance_schema;"
ss -lntp | grep 3306
16. 常见陷阱
- 不要混合使用 MariaDB 和 Oracle MySQL — 二者选其一
- GPG 密钥过期 —
RPM-GPG-KEY-mysql-2023已过期 → 使用RPM-GPG-KEY-mysql-2025 software-properties-common缺失 — 该包为 Ubuntu 专用,Debian 13 上不可用- APT 源错误 — 使用
trixie,而非bookworm - 直接编辑
mysqld.cnf— 建议在/etc/mysql/mysql.conf.d/中使用zz-*.cnf文件 - 未停止 MySQL 就迁移数据目录 — 务必先停止服务
- 不加过滤地暴露 3306 端口 — 限制主机,在防火墙层面进行过滤
精简流程
apt-get update && apt-get -y upgrade
apt-get install -y wget gnupg ca-certificates curl sudo
mkdir -p /etc/apt/keyrings
wget -O /etc/apt/keyrings/mysql.gpg https://repo.mysql.com/RPM-GPG-KEY-mysql-2025
cat >/etc/apt/sources.list.d/mysql.list <<'EOF'
deb [signed-by=/etc/apt/keyrings/mysql.gpg] http://repo.mysql.com/apt/debian/ trixie mysql-8.4-lts mysql-tools
EOF
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server
systemctl enable --now mysql
mysql -e "DELETE FROM mysql.user WHERE User=''; DROP DATABASE IF EXISTS test; DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'; FLUSH PRIVILEGES;"
测试安装结果
安装于 2026 年 4 月 13 日在 Proxmox 虚拟机上完成:
- 虚拟机:VMID 115,
mysql84-deb13,IP10.68.68.190 - 操作系统:Debian 13.4 (trixie),内核 6.12.74
- MySQL:8.4.8 (MySQL Community Server - GPL)
- 服务:已启动,开机自启
- 配置:bind 0.0.0.0,skip_name_resolve ON,innodb_buffer_pool_size 1G,max_connections 200
- performance_schema:已激活
- 端口 3306:监听 0.0.0.0
结论
在 Debian 13 上,安装 MySQL 8.4 的正确方法是使用 Oracle MySQL APT 仓库。
与初始文档相比的修正:
- GPG 密钥:
RPM-GPG-KEY-mysql-2023已过期 → 使用RPM-GPG-KEY-mysql-2025 - 依赖项:移除
software-properties-common(Debian 13 上不可用) - Root 连接:使用
DEBIAN_FRONTEND=noninteractive时,root 通过 socket 连接,无需密码 - performance_schema:在 MySQL 8.4.8 上默认已激活
评论 (0)
暂无评论。
发表评论