目录
- 1.安装MySQL
-
- [第一步:更新 Ubuntu 系统软件源](#第一步:更新 Ubuntu 系统软件源)
- [第二步:安装 MySQL 服务器](#第二步:安装 MySQL 服务器)
- [第三步:安全初始化配置 MySQL(关键步骤)](#第三步:安全初始化配置 MySQL(关键步骤))
- [第四步:验证 MySQL 服务运行状态](#第四步:验证 MySQL 服务运行状态)
- [第五步:登录 MySQL 数据库,验证安装结果](#第五步:登录 MySQL 数据库,验证安装结果)
- 总结
- [2. 相关配置](#2. 相关配置)
-
- [2.1 MySQL 配置文件核心存放位置](#2.1 MySQL 配置文件核心存放位置)
- [2.2 配置修改](#2.2 配置修改)
-
- [2.2.1 推荐修改配置](#2.2.1 推荐修改配置)
- [2.2.2 配置修改后的后续操作](#2.2.2 配置修改后的后续操作)
- [3. 相关问题](#3. 相关问题)
1.安装MySQL
(默认安装 Ubuntu22.04 官方源中的 MySQL 8.0 版本,最稳定且推荐):
第一步:更新 Ubuntu 系统软件源
首先登录 Ubuntu22.04(桌面版或服务器版均可),打开终端(桌面版可通过Ctrl+Alt+T快速调出),执行更新命令,确保系统软件包列表最新,避免安装依赖冲突:
bash
sudo apt update
sudo apt upgrade -y # 可选,升级已安装的软件包,提升系统稳定性
执行时会提示输入当前用户的密码(输入时终端不显示明文,输入完成回车即可),sudo表示以管理员权限执行命令。
第二步:安装 MySQL 服务器
Ubuntu22.04 的官方软件源中已包含 MySQL 服务器包,直接通过apt命令安装即可,命令如下:
bash
sudo apt install mysql-server -y
安装过程无需手动干预,系统会自动下载、解压并配置 MySQL 的基础运行环境,包括创建 MySQL 系统用户、生成默认配置文件等。
第三步:安全初始化配置 MySQL(关键步骤)
MySQL 安装完成后,默认安全性较低(如允许匿名用户登录、无密码验证等),需通过官方提供的mysql_secure_installation脚本进行安全配置,执行命令:
bash
sudo mysql_secure_installation
执行后会进入交互式配置流程,按以下步骤逐一操作:
-
是否启用 MySQL 密码验证组件(VALIDATE PASSWORD COMPONENT)
提示:
Would you like to setup VALIDATE PASSWORD component?输入
y(是),回车(该组件用于校验密码强度,提升安全性,推荐启用)。 -
设置密码强度级别
提示:
There are three levels of password validation policy:可选 3 个级别:
0(低,仅需密码长度≥8)、1(中,需包含数字、小写字母、大写字母 / 特殊字符)、2(高,需包含数字、大小写字母、特殊字符且不能包含用户名 / 常见字符串)。输入对应数字(推荐
1,兼顾安全性和易用性),回车。 -
设置 MySQL root 用户密码
提示:
Please set the password for root here.输入你要设置的 root 密码(建议符合强度要求,如Root@123456),回车,然后再次输入相同密码确认,回车。
-
删除匿名用户
提示:
Remove anonymous users?输入
y,回车(匿名用户存在安全风险,禁止匿名登录)。 -
禁止 root 用户远程登录
提示:
Disallow root login remotely?先输入
y,回车(默认禁止 root 远程登录,如需远程连接,后续可单独配置专用用户,更安全)。 -
删除测试数据库(test)
提示:
Remove test database and access to it?输入
y,回车(test 数据库为默认测试用,无实际业务用途,删除可减少安全隐患)。 -
刷新权限表,使配置生效
提示:
Reload privilege tables now?输入
y,回车(立即刷新 MySQL 的权限配置,无需重启服务即可生效)。
Disallow root login remotely? 这个问题选择y还是n
答:推荐选择 y(禁止 root 用户远程登录)
第四步:验证 MySQL 服务运行状态
MySQL 安装完成后会自动启动,并设置为开机自启,可通过以下命令验证服务是否正常运行:
bash
# 查看MySQL服务状态
sudo systemctl status mysql
若输出结果中包含active (running)(绿色字体),说明 MySQL 服务已正常启动。
补充相关服务管理命令(后续可按需使用):
bash
# 启动MySQL服务(若未启动)
sudo systemctl start mysql
# 停止MySQL服务
sudo systemctl stop mysql
# 重启MySQL服务(配置修改后需生效时使用)
sudo systemctl restart mysql
# 设置MySQL开机自启(默认已开启,可再次确认)
sudo systemctl enable mysql
第五步:登录 MySQL 数据库,验证安装结果
Ubuntu22.04 中安装的 MySQL 8.0,默认对本地root用户采用auth_socket认证方式(而非密码认证),因此本地登录有两种方式:
方式 1:无需密码,直接以管理员身份登录(推荐本地操作)
bash
sudo mysql -u root
执行后直接进入 MySQL 的命令行界面(提示符变为mysql>),表示登录成功。
方式 2:通过密码登录(需修改 root 用户认证方式)
若想通过mysql -u root -p输入密码登录,需先修改 root 用户的认证插件为mysql_native_password,步骤如下:
- 先通过方式 1 登录 MySQL 命令行,执行以下 SQL 语句(替换
'你的root密码'为第三步设置的密码):
sql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的root密码';
-- 刷新权限,使修改生效
FLUSH PRIVILEGES;
- 执行
exit;退出 MySQL 命令行,然后通过密码登录:
bash
mysql -u root -p
- 输入第三步设置的 root 密码,回车即可登录 MySQL 命令行。
验证登录成功
进入 MySQL 命令行后,可执行简单 SQL 语句验证功能正常:
sql
-- 查看MySQL版本
SELECT VERSION();
-- 查看所有数据库
SHOW DATABASES;
执行后会返回对应结果,说明 MySQL 运行正常,安装完成。
总结
- 核心流程:更新软件源 → 安装
mysql-server→ 安全初始化mysql_secure_installation→ 验证服务与登录。 - 关键注意点:Ubuntu22.04 的 MySQL 8.0 默认采用
auth_socket本地认证,密码登录需修改认证插件。 - 远程访问需配置:绑定 0.0.0.0 + 创建远程用户 + 开放 3306 端口 + 重启 MySQL。
- 验证标准:能进入
mysql>命令行并执行 SQL 语句,即为安装成功。
2. 相关配置
2.1 MySQL 配置文件核心存放位置
Ubuntu 22.04 中的 MySQL 8.0,核心配置文件(服务端配置) 是 /etc/mysql/mysql.conf.d/mysqld.cnf,所有关于 MySQL 服务端的配置(端口、数据目录、编码、存储引擎等)都在这个文件中修改。
补充说明:
- 全局配置文件
/etc/mysql/my.cnf:该文件通常不直接编辑,它会通过!includedir指令包含其他目录下的配置文件(包括mysql.conf.d目录),起到统一整合配置的作用。 - 编辑配置文件需要管理员权限,推荐使用
nano或vim编辑,例如:sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf。
2.2 配置修改
2.2.1 推荐修改配置
sql
[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
# ... 其他原有配置
2.2.2 配置修改后的后续操作
-
保存配置并退出编辑:
- 若使用
nano编辑:按Ctrl+O保存,按Ctrl+X退出。 - 若使用
vim编辑:按Esc,输入:wq回车保存退出。
- 若使用
-
验证配置语法(避免语法错误导致服务无法启动):
bashsudo mysqld --help --verbose | grep -E 'port|datadir|character-set-server'若输出无报错,且能看到你配置的参数值,说明语法无误。
-
重启 MySQL 服务,使配置生效:
bashsudo systemctl restart mysql -
验证配置是否生效(登录 MySQL 命令行执行以下 SQL):
sql-- 查看端口、编码、存储引擎等配置信息 SHOW VARIABLES LIKE 'port'; SHOW VARIABLES LIKE 'datadir'; SHOW VARIABLES LIKE 'character_set_server'; SHOW VARIABLES LIKE 'default_storage_engine';输出结果与你配置的内容一致,即表示配置生效。
总结:
- 核心配置文件:
/etc/mysql/mysql.conf.d/mysqld.cnf([mysqld]节点下修改)。 - 5 项配置核心:端口 3306、数据目录
/var/lib/mysql、socket 默认保留、编码utf8mb4、存储引擎InnoDB。 - 关键步骤:修改后重启 MySQL 服务,通过 SQL 语句验证配置是否生效。
- 编码避坑:MySQL 中优先使用
utf8mb4而非utf8,兼容完整标准 UTF-8。
3. 相关问题
在/var/lib/mysql中有binlog.000095类似这种文件,从1到100多,这是什么文件?
/var/lib/mysql 目录下 binlog.000095 这类序号递增文件的含义,其实这些文件是 MySQL 的二进制日志文件(Binary Log,简称 binlog) ,是 MySQL 中非常重要的日志类型。binlog 主要记录了 MySQL 中所有对数据库数据产生修改的操作(增、删、改,即 DML 操作;以及建库、建表等 DDL 操作) ,不会记录查询操作(如 SELECT、SHOW)。
正确的 binlog 删除方式(推荐 2 种,禁止直接 rm)
方式 1:配置自动过期清理(推荐,长期省心,无人工失误风险)
这是最优解,通过 MySQL 配置自动清理过期 binlog,无需手动干预,且会自动更新binlog.index索引文件,步骤如下:
-
编辑 MySQL 配置文件
/etc/mysql/mysql.conf.d/mysqld.cnf:bashsudo nano /etc/mysql/mysql.conf.d/mysqld.cnf -
在
[mysqld]节点下添加过期清理配置(以保留 7 天为例):ini# MySQL 8.0 推荐配置(单位:秒,604800秒=7天) binlog_expire_logs_seconds = 604800补充:若为 MySQL 5.7,可配置
expire_logs_days = 7(单位:天),MySQL 8.0 也兼容该配置,但优先推荐binlog_expire_logs_seconds(精度更高)。 -
保存退出,重启 MySQL 服务使配置生效:
bashsudo systemctl restart mysql -
生效后,MySQL 会自动检测并清理超过 7 天的 binlog 文件,且同步更新
binlog.index,安全无风险。
方式 2:通过 MySQL 命令手动清理(规范操作,适合临时清理)
若需要临时清理部分 binlog 文件,必须通过 MySQL 内置命令执行(而非rm),命令会自动更新binlog.index,步骤如下:
-
登录 MySQL 命令行(
sudo mysql -u root)。 -
执行以下清理命令(二选一,谨慎操作):
sql-- 方式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'; -
执行完成后,退出 MySQL 命令行,可通过
cat /var/lib/mysql/binlog.index验证,被删除的 binlog 文件名已从索引文件中移除。