news 2026/7/14 11:36:41

【最新】MySQL9.7安装教程:图文详解(附MySQL安装包)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【最新】MySQL9.7安装教程:图文详解(附MySQL安装包)

描述:最详细的MySQL 9.7二进制安装教程,覆盖MySQL环境检查、MySQL安装配置、MySQL启动排错、用户安全、SQL基础、参数调优、事务与索引原理,适合学生、开发和运维工程师。

一、安装前必读

1.1 为什么选择二进制安装?

MySQL 在 Linux 下支持多种安装方式:

安装方式优点缺点
源码编译定制性强,可优化编译参数耗时长,依赖多,易出错
YUM/RPM方便快捷,自动解决依赖版本滞后,路径分散,管理不便
二进制(预编译)开箱即用,性能稳定,便于多实例管理需手动配置环境变量和服务

本教程采用官方二进制包(glibc 2.28 版),适合生产环境批量部署,统一目录规范(/opt/mysql+/data分离)。

1.2 下载MySQL 9.7.1 二进制包

百度网盘链接(含mysql-9.7.1-linux-glibc2.28-x86_64.tar.xz):
🔗 链接: https://pan.baidu.com/s/1QRuCxRMsXaiv4d4quGpzuQ?pwd=hpe3
📦 提取码:hpe3

1.3 检查系统glibc版本(必须 ≥ 2.28)

如果还没有Linux环境,请参考我的这篇文章:VMware安装Rocky Linux。

[root@test ~]# ldd --versionldd(GNU libc)2.34# 如果小于2.28,请升级系统或下载低版本MySQL

如果版本低于 2.28,启动会报错FATAL: kernel too oldGLIBC_2.28 not found


二、二进制安装MySQL 9.7全流程

2.1 创建虚拟用户及目录

# 创建MySQL运行用户(不登录,无家目录)useradd-s/sbin/nologin-Mmysql# 创建软件存放、安装、数据目录mkdir-p/server/toolsmkdir-p/opt/mysqlmkdir-p/data/mysql/mysql3306/{data,logs}cd/server/tools


2.2 上传并解压二进制包

# 若没有rz,先安装 lrzszyuminstall-ylrzsz rz# 选择下载好的 tar.xz 文件若没有tar工具,先按照 yuminstalltar-y# 解压(.xz 格式,用 xf 参数)tarxf mysql-9.7.1-linux-glibc2.28-x86_64.tar.xz



2.3 移动软件并创建软链接

mvmysql-9.7.1-linux-glibc2.28-x86_64 /opt/mysql/mysql-9.7.1ln-s/opt/mysql/mysql-9.7.1/ /usr/local/mysql

2.4 移除系统自带的 MariaDB 库(避免冲突)

rpm-e--nodepsmariadb-libs

2.5 编写实例配置文件(多实例标准化)

使用vi /data/mysql/mysql3306/my3306.cnf,粘贴以下内容(已针对 MySQL 9.7 优化):

[mysqld] user=mysql basedir=/usr/local/mysql datadir=/data/mysql/mysql3306/data socket=/data/mysql/mysql3306/mysql.sock server_id=1 port=3306 log_error=/data/mysql/mysql3306/logs/error.log log_bin=/data/mysql/mysql3306/logs/mysql-bin binlog_format=row gtid_mode=on enforce_gtid_consistency=true log_slave_updates=1 # 连接与超时 max_connections=1024 wait_timeout=60 max_allowed_packet=32M # 排序与连接缓冲区 sort_buffer_size=2M join_buffer_size=2M # InnoDB 核心配置(生产环境请调大 buffer pool) innodb_buffer_pool_size=128M # 建议设为物理内存的70%~80% innodb_flush_log_at_trx_commit=1 # 最安全(双一) innodb_log_buffer_size=32M innodb_redo_log_capacity = 128M # 二进制日志缓存 binlog_cache_size=2M max_binlog_cache_size=8M max_binlog_size=512M binlog_expire_logs_seconds=604800 # 7天 # 慢查询日志 slow_query_log=on slow_query_log_file=/data/mysql/mysql3306/logs/slow.log long_query_time=0.5 log_queries_not_using_indexes=1

⚠️注意:MySQL 9.7 已废弃部分老参数(如expire_logs_daysbinlog_expire_logs_seconds取代),本配置已兼容。

2.6 安装依赖包并修改目录权限

yuminstall-ylibaio-devel numactlchown-Rmysql:mysql /data/*


2.7 初始化数据库(无密码,方便首次登录)

/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3306/my3306.cnf\--initialize-insecure--user=mysql--basedir=/usr/local/mysql\--datadir=/data/mysql/mysql3306/data

若想生成随机初始密码,将--initialize-insecure替换为--initialize,密码会记录在error.log中。

2.8 添加环境变量

echo'PATH="/usr/local/mysql/bin:$PATH"'>>/etc/profilesource/etc/profile

2.9 启动MySQL

mysqld --defaults-file=/data/mysql/mysql3306/my3306.cnf&

2.10 验证启动

# 如没有netstat命令,先安装yuminstallnet-tools-ynetstat-lntup|grep3306# 或者ss-lntup|grepmysql

三、MySQL启动失败常见案例与排查

3.1 目录权限问题

错误日志
[ERROR] Could not open file '/data/mysql/mysql3306/logs/error.log' for error logging: Permission denied

原因:data/logs 目录属主不是mysql:mysql
解决chown -R mysql:mysql /data/*

3.2 配置文件参数拼写或版本废弃

错误[ERROR] unknown variable 'basedi=/usr/local/mysql'
解决:仔细检查my3306.cnf,修改正确拼写(如basedir)。

3.3 未正确指定配置文件

现象:MySQL 启动时使用了默认路径的配置(如/etc/my.cnf),导致参数不符。
排查mysqld --verbose --help | grep defaults查看默认加载顺序。
解决:启动时务必带--defaults-file指定绝对路径。

3.4 端口被占用

错误[ERROR] Do you already have another mysqld server running on port: 3306 ?
解决:修改端口或 kill 旧进程,多实例需确保每个实例端口不同。

3.5 二进制日志文件丢失

错误[ERROR] Failed to open log (file '/data/mysql/mysql3306/logs/mysql-bin.000014', errno 2)
解决:编辑mysql-bin.index,删除缺失的那一行记录。

3.6 共享表空间大小不匹配

错误The Auto-extending innodb_system data file './ibdata1' is of a different size ...
解决:若未初始化,修改配置文件中的innodb_data_file_path=ibdata1:12M:autoextend(默认12M),重新初始化。


启动失败三板斧排查口诀

  1. 看版本:确认ldd --versionmysql --version
  2. 看日志tail -100 /data/mysql/mysql3306/logs/error.log
  3. 看权限ls -l /data/mysql/mysql3306/data是否属主正确。

四、连接MySQL与用户安全策略

4.1 本地与远程连接方式

# 本地socket连接mysql-S/data/mysql/mysql3306/mysql.sock

4.2 初始化安全策略

  • --initialize-insecure:root 密码为空,需立即修改。
  • --initialize:生成随机密码,在 error.log 中查找A temporary password is generated for root@localhost

修改root密码

ALTERUSER'root'@'localhost'IDENTIFIEDBY'YourStrongP@ssw0rd';

或使用mysqladmin

mysqladmin-uroot-p'oldpass'password'newpass'-S/data/mysql/mysql3306/mysql.sock

4.3 删除匿名用户与多余账号

DELETEFROMmysql.userWHEREuser!='root';FLUSHPRIVILEGES;

4.4 创建管理用户并授权

CREATEUSER'ergou'@'localhost'IDENTIFIEDBY'123456';GRANTALLPRIVILEGESON*.*TO'ergou'@'localhost'WITHGRANTOPTION;FLUSHPRIVILEGES;

五、MySQL基础操作(DML/DDL/DQL/DCL)

SQL 语言按功能分为四大类,掌握它们是DBA和开发的基本功。

5.1 DDL(数据定义语言)

用于创建、修改、删除数据库对象(库、表、索引等)。

-- 创建数据库CREATEDATABASEIFNOTEXISTStestdbCHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci;-- 创建表CREATETABLEtestdb.users(idINTPRIMARYKEYAUTO_INCREMENT,usernameVARCHAR(50)NOTNULL,emailVARCHAR(100)UNIQUE,created_atDATETIMEDEFAULTCURRENT_TIMESTAMP)ENGINE=InnoDBDEFAULTCHARSET=utf8mb4;-- 修改表结构(添加列)ALTERTABLEtestdb.usersADDCOLUMNageTINYINT;-- 删除表DROPTABLEtestdb.users;

5.2 DML(数据操纵语言)

增、删、改数据。

-- 插入INSERTINTOtestdb.users(username,email)VALUES('zhangsan','zhangsan@example.com');-- 更新UPDATEtestdb.usersSETage=28WHEREusername='zhangsan';-- 删除(务必带条件)DELETEFROMtestdb.usersWHEREid=1;

5.3 DQL(数据查询语言)

最常用的SELECT查询。

-- 简单查询SELECT*FROMtestdb.usersWHEREage>20ORDERBYcreated_atDESC;-- 聚合查询SELECTCOUNT(*),AVG(age)FROMtestdb.users;-- 多表联查(JOIN)SELECTu.username,o.order_idFROMusers uJOINorders oONu.id=o.user_id;

5.4 DCL(数据控制语言)

权限管理与事务控制(事务也常归为DCL)。

-- 授予权限GRANTSELECT,INSERTONtestdb.*TO'app_user'@'%';-- 回收权限REVOKEINSERTONtestdb.*FROM'app_user'@'%';-- 事务控制(begin/commit/rollback)STARTTRANSACTION;UPDATEaccountsSETbalance=balance-100WHEREuser_id=1;UPDATEaccountsSETbalance=balance+100WHEREuser_id=2;COMMIT;-- 或 ROLLBACK;

六、MySQL 9.7 核心参数详解

参数作用建议值
innodb_buffer_pool_sizeInnoDB 缓存数据和索引的内存池,性能最关键参数物理内存的70%~80%
innodb_log_file_size重做日志文件大小,影响崩溃恢复速度和写入性能1G~4G(生产)
innodb_flush_log_at_trx_commit1(最安全,每次提交刷盘)、2(每秒刷盘)、0(每秒刷盘,延迟)生产环境=1
binlog_format二进制日志格式:row(推荐)、statementmixedROW
gtid_mode开启全局事务标识,便于主从切换ON
max_connections最大并发连接数根据业务估算,一般 500~2000
wait_timeout非交互连接超时秒数,避免长连接堆积60~300
binlog_expire_logs_secondsbinlog 保留时间(秒)604800(7天)
long_query_time慢查询阈值(秒)0.5~2
log_queries_not_using_indexes记录未走索引的查询,便于优化ON

修改参数后,需重启实例或动态调整(部分参数支持SET GLOBAL)。


七、事务与索引深度解析

7.1 事务(Transaction)

事务特性(ACID)

  • 原子性(A):事务中操作要么全部成功,要么全部失败。
  • 一致性(C):事务前后数据库完整性约束不被破坏。
  • 隔离性(I):并发事务互相隔离,MySQL 提供四种隔离级别:
    • READ UNCOMMITTED(读未提交)
    • READ COMMITTED(读已提交,Oracle默认)
    • REPEATABLE READ(可重复读,MySQL默认,解决幻读)
    • SERIALIZABLE(串行化,性能最低)
  • 持久性(D):事务提交后数据持久化到磁盘。

查看隔离级别SELECT @@transaction_isolation;
设置隔离级别SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;

MVCC(多版本并发控制):MySQL 通过 undo log 实现非锁定读,提高并发性能。

7.2 索引(Index)

索引是加速查询的数据结构(B+树、Hash等),但会占用空间并影响写入性能。

常见索引类型

  • PRIMARY KEY:聚集索引,叶子节点存储完整行数据。
  • UNIQUE KEY:唯一索引,不允许重复。
  • INDEX(普通索引):辅助索引,叶子节点存储主键值(回表)。
  • FULLTEXT:全文索引(用于文本搜索)。
  • 复合索引:多列组合,遵循最左前缀原则

索引优化建议

  1. 在 WHERE、JOIN、ORDER BY 列上建索引。
  2. 区分度高的列优先(如身份证号优于性别)。
  3. 避免在索引列上使用函数或计算。
  4. 使用EXPLAIN分析执行计划,关注typekeyrows

查看索引SHOW INDEX FROM table_name;
创建索引CREATE INDEX idx_name ON table_name (col1, col2);
删除索引DROP INDEX idx_name ON table_name;


八、总结与最佳实践

通过本教程,你已掌握:

✅ MySQL 9.7 二进制安装全流程(从下载到启动)
✅ 常见启动故障排查思路(权限、参数、端口、日志)
✅ 用户安全和连接方式
✅ SQL 四大分类(DDL/DML/DQL/DCL)实操
✅ 核心参数调优与事务/索引原理

生产环境部署建议

  • 数据目录与软件目录分离,便于迁移和扩容。
  • 开启 binlog + GTID,为高可用(主从、MGR)做准备。
  • 定期监控慢查询,并利用pt-query-digest分析。
  • 使用mysql_secure_installation脚本加固安全。

MySQL 9.7 新特性亮点(简要):

  • 更强大的 JSON 函数支持。
  • 改进的 InnoDB 并行读取。
  • 优化器对窗口函数和 CTE 的优化。
  • 安全性增强(caching_sha2_password 默认)。

关键词:MySQL 9.7安装、MySQL二进制安装、MySQL 9.7配置、MySQL基础操作、DML DDL DQL DCL、MySQL事务索引、MySQL启动排错

如果觉得本文对你有帮助,欢迎收藏、转发,如有问题请在评论区留言,我会尽力解答!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 11:35:32

server.properties 关键配置

一、 消息队列是分布式系统的血管,承载着数据在不同服务间的流动。但当你的产品从日活几百增长到几万,消息队列开始成为瓶颈:Kafka 的延迟飙升、RabbitMQ 的内存报警、Pulsar 的 BookKeeper 节点频繁掉线……这时候才意识到,消息…

作者头像 李华
网站建设 2026/7/14 11:34:55

C++ IIR滤波器库:从双二阶结构到实时音频处理的工程实践

1. 项目概述:从零构建一个可复用的C IIR滤波器库 最近在做一个嵌入式音频处理的项目,需要实时滤除采集信号中的特定频率噪声。翻了一圈开源库,要么依赖太重,要么接口复杂,要么性能达不到要求。索性自己动手&#xff0c…

作者头像 李华
网站建设 2026/7/14 11:34:31

UVa 670 The Dog Task

题目描述 Bob\texttt{Bob}Bob 沿一条由 NNN 个点组成的折线匀速行走,Ralph\texttt{Ralph}Ralph 是 Bob\texttt{Bob}Bob 的狗,它也在同一时间从起点出发,在终点与 Bob\texttt{Bob}Bob 同时到达。狗的速度最多是 Bob\texttt{Bob}Bob 的 222 倍。…

作者头像 李华
网站建设 2026/7/14 11:32:50

【创客匠人资讯分享】AI浪潮下,知识付费的价值迭代与新生

近几年,生成式AI的全面普及,彻底打破了知识传播的固有格局。曾经依托信息差、碎片化内容走红的知识付费行业,正经历一场温和且深刻的业态重塑。AI让基础知识的生产、整理、传播门槛无限降低,浅层科普、标准化课程不再具备稀缺价值…

作者头像 李华
网站建设 2026/7/14 11:32:08

免费开源AI数字人克隆工具:Duix.Avatar完整指南与实战教程

免费开源AI数字人克隆工具:Duix.Avatar完整指南与实战教程 【免费下载链接】Duix-Avatar 🚀 Truly open-source AI avatar(digital human) toolkit for offline video generation and digital human cloning. 项目地址: https://gitcode.com/GitHub_Tr…

作者头像 李华