在服务端开发中,MySQL 作为核心数据库中间件,承载着大量业务数据。本文将基于 Ubuntu 22.04 环境,手把手带你完成 MySQL 8.0 的安装、安全初始化、核心配置以及常见问题处理,帮助你快速搭建可靠的数据库服务。
为什么选择 Ubuntu 22.04 与 MySQL 8.0?
Ubuntu 22.04 LTS 是当前最稳定的长期支持版本之一,其官方软件源内置了 MySQL 8.0,这意味着你可以通过简单的包管理命令完成安装,无需手动编译或添加第三方仓库。MySQL 8.0 在性能、安全性和功能上相比旧版有显著提升,例如支持窗口函数、通用表表达式等高级特性,是当前后端开发的主流选择。
第一步:更新软件源,确保依赖干净
在开始安装前,务必先更新系统软件包列表,避免因依赖冲突导致安装失败。打开终端(桌面版可通过快捷键 Ctrl+Alt+T 快速调出),执行以下命令:
sudo apt update
sudo apt upgrade -y # 可选,升级已安装的软件包,提升系统稳定性
输入当前用户密码(终端不显示明文)后,系统会同步最新的软件源信息。注意,sudo 表示以管理员权限执行,这是后续所有安装操作的基础。
第二步:安装 MySQL 服务器
Ubuntu 官方源已包含 MySQL 服务器包,直接使用 apt 命令安装即可:
sudo apt install mysql-server -y
安装过程全自动,无需手动干预。系统会创建 MySQL 系统用户、生成默认配置文件,并完成基础环境搭建。整个过程通常只需几十秒,取决于网络速度。
第三步:安全初始化配置(关键步骤)
刚安装的 MySQL 安全性较低,存在匿名用户、空密码等问题。官方提供了 mysql_secure_installation 脚本进行安全加固,执行:
sudo mysql_secure_installation
脚本会进入交互式配置,按以下顺序操作:
- 启用密码验证组件:提示
Would you like to setup VALIDATE PASSWORD component?,输入y启用,该组件会强制校验密码强度。 - 选择密码强度级别:
There are three levels of password validation policy:提供三个选项——0(低,仅需长度≥8)、1(中,需数字/大小写/特殊字符)、2(高,额外排除常见字符串)。推荐输入1(中等级),平衡安全与易用。 - 设置 root 密码:提示
Please set the password for root here.,输入强密码(如Root@123456)并二次确认。 - 删除匿名用户:提示
Remove anonymous users?,输入y禁止匿名登录。 - 禁止 root 远程登录:提示
Disallow root login remotely?,输入y保持默认,后续可单独创建远程用户。 - 删除测试数据库:提示
Remove test database and access to it?,输入y移除 test 库。 - 刷新权限表:提示
Reload privilege tables now?,输入y使配置立即生效。
Disallow root login remotely? 这个问题选择y还是n
答:推荐选择 y(禁止 root 用户远程登录)
第四步:验证服务状态与登录测试
安装后 MySQL 会自动启动并设为开机自启,通过以下命令确认服务运行:
# 查看MySQL服务状态
sudo systemctl status mysql
输出中若包含 active (running)(绿色),表示服务正常。其他常用管理命令如下:
# 启动MySQL服务(若未启动)
sudo systemctl start mysql
# 停止MySQL服务
sudo systemctl stop mysql
# 重启MySQL服务(配置修改后需生效时使用)
sudo systemctl restart mysql
# 设置MySQL开机自启(默认已开启,可再次确认)
sudo systemctl enable mysql
登录方式详解
Ubuntu 22.04 的 MySQL 8.0 默认对本地 root 用户采用 auth_socket 认证(免密),因此有两种登录方式:
- 方式一(推荐本地操作):直接以管理员身份登录,无需密码:
sudo mysql -u root
执行后进入 mysql> 提示符(mysql>)即成功。
- 方式二(密码登录):需先修改认证插件为
mysql_native_password。先通过方式一登录,执行以下 SQL(替换'你的root密码'为你的密码):
退出(exit;)后,即可通过密码登录:
mysql -u root -p
最后执行一条简单 SQL 验证功能:
-- 查看MySQL版本
SELECT VERSION();
-- 查看所有数据库
SHOW DATABASES;
返回结果即表示安装成功。✅
第五步:核心配置与优化建议
MySQL 服务端核心配置文件位于 /etc/mysql/mysql.conf.d/mysqld.cnf,所有关键参数(端口、数据目录、字符集等)都在此修改。全局配置文件 /etc/mysql/my.cnf 通常不直接编辑,而是通过 !includedir 指令包含其他目录(如 mysql.conf.d)。编辑需管理员权限,推荐使用 nano 或 vim:sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf。
推荐的配置项
[mysqld]
# 1. 端口号
port = 3306
# 2. 数据目录
datadir = /var/lib/mysql
# 3. Socket文件(默认)
socket = /var/run/mysqld/mysqld.sock
# 4. 完整UTF-8编码配置
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# 5. 默认存储引擎
default-storage-engine = InnoDB
# 以下为文件原有默认配置,保留即可,无需修改
pid-file = /var/run/mysqld/mysqld.pid
user = mysql
# ... 其他原有配置
配置生效流程
- 保存退出:nano 按
Ctrl+O保存、Ctrl+X退出;vim 按Esc后输入wq回车。 - 验证语法:执行
检查配置是否正确,无报错且能看到参数值即可。sudo mysqld --help --verbose | grep -E 'port|datadir|character-set-server' - 重启服务:
使配置生效。sudo systemctl restart mysql - 验证效果:登录 MySQL 执行
确认参数已更新。-- 查看端口、编码、存储引擎等配置信息 SHOW VARIABLES LIKE 'port'; SHOW VARIABLES LIKE 'datadir'; SHOW VARIABLES LIKE 'character_set_server'; SHOW VARIABLES LIKE 'default_storage_engine';
⚠️ 编码避坑:MySQL 中优先使用 utf8mb4(utf8mb4)而非 utf8(utf8),因为前者完整支持标准 UTF-8(含 emoji 等四字节字符)。
常见问题:binlog 文件过多怎么办?
在 /var/lib/mysql 目录下,你可能会看到 binlog.000001 到 binlog.000095 等序号递增的文件。这些是 MySQL 的二进制日志(binlog),记录所有数据变更操作(DML/DDL),但不包含 SELECT 查询。binlog 是数据恢复和主从复制的基础,但文件会持续增长,需要合理清理。
推荐清理方式(禁止直接 rm)
方式一:配置自动过期清理(长期省心)
编辑配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
在 [mysqld] 节点下添加(以保留 7 天为例):
# MySQL 8.0 推荐配置(单位:秒,604800秒=7天)
binlog_expire_logs_seconds = 604800
补充:若为 MySQL 5.7,可配置(单位:天),MySQL 8.0 也兼容该配置,但优先推荐(精度更高)。
重启服务生效:
sudo systemctl restart mysql。此后 MySQL 会自动清理过期 binlog,并同步更新索引文件。方式二:通过 SQL 手动清理(临时操作)
登录 MySQL 命令行(sudo mysql -u root),执行以下命令之一:
-- 方式A:删除所有序号小于 binlog.000095 的binlog文件(保留 binlog.000095 及以后的文件)
PURGE BINARY LOGS TO 'binlog.000095';
-- 方式B:删除2026-01-01 00:00:00 之前生成的所有binlog文件(替换为你的目标时间)
PURGE BINARY LOGS BEFORE '2026-01-01 00:00:00';
执行后可通过 cat /var/lib/mysql/binlog.index 验证索引文件已更新。
在微服务架构中,binlog 还常被用于数据变更捕获(CDC),如同步到缓存或搜索引擎,因此合理管理 binlog 非常重要。
总结
本文从零开始演示了 Ubuntu 22.04 上 MySQL 8.0 的完整安装流程,包括安全初始化、登录验证、核心配置优化以及 binlog 管理。核心要点:更新源 → 安装 → 安全配置 → 验证登录;注意默认 auth_socket 认证需修改才能密码登录;远程访问需绑定 0.0.0.0 并创建专用用户。掌握这些,你就能快速构建可靠的数据库服务,为后端应用打下坚实基础。
[AFFILIATE_SLOT_1]如果你需要更深入的 MySQL 调优,建议参考官方文档或购买专业书籍学习。
[AFFILIATE_SLOT_2]expire_logs_days = 7binlog_expire_logs_seconds
浙公网安备 33010602011771号