MySQL的配置文件详解及实例代码

2025-08-18 09:50

本文主要是介绍MySQL的配置文件详解及实例代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《MySQL的配置文件详解及实例代码》MySQL的配置文件是服务器运行的重要组成部分,用于设置服务器操作的各种参数,下面:本文主要介绍MySQL配置文件的相关资料,文中通过代码介绍的非常详细,需要...

前言

MySQL 的配置文件(通常是 my.cnfmy.ini)是控制 MySQL 服务器行为的重要文件。不同操作系统的配置文件位置可能不同:

  • linux/Unix/etc/my.cnf/etc/mysql/my.cnf/usr/local/mysql/etc/my.cnf~/.my.cnf
  • WindowsC:\ProgramData\MySQL\MySQL Server X.Y\my.ini(具体路径取决于安装版本)

一、配置文件结构

配置文件由多个 section(分组) 组成,每个 section 对应不同的组件或客户端工具。常见 section 如下:

1.[mysqld]

MySQL 服务器核心配置(必填)。

[mysqld]
# 基础配置
port = 3306              # 监听端口(默认3306)
datadir = /var/lib/mysql # 数据存储目录
socket = /tmp/mysql.sock # Unix socket 文件路径
user = mysql             # 运行MySQL的系统用户

# 字符集配置
character-set-server = utf8mb4  # 服务器默认字符集
collation-server = utf8mb4_unicode_ci  # 默认排序规则

# 日志配置
log-error = /var/log/mysql/error.log  # 错误日志路径
slow_query_log = 1                    # 开启慢查询日志
slow_query_log_file = python/var/log/mysql/slow.log
long_query_time = 2                   # 慢查询阈值(秒)

# 内存与性能
innodb_buffer_pool_size = 1G          # InnoDB缓冲池大小(建议设为物理内存的50-80%)
innodb_log_file_size = 256M           # InnoDB日志文件大小
max_connections = 200                 # 最大并发连接数
thread_cache_size = 10                # 线程缓存数量

# 安全相关
skip_name_resolve = 1                 # 禁用DNS反向解析(提升连接速度)
secure_file_priv = /var/lib/mysql-files  # 限制文件导入导出路径

2.[client]

客户端工具(如 mysql 命令行)的默认配置。

[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8mb4

3.[mysql]

mysql 命令行客户端的配置。

[mysql]
auto-rehash           # 启用自动补全
prompt = "http://www.chinasem.cn\u@\\h:\\d> "  # 自定义提示符(用户@主机:数据库www.chinasem.cn

4.[mysqldump]

备份工具 mysqldump 的配置。

[mysqldump]
quick                  # 逐行导出数据(减少内存占用)
max_allowed_packet = 256M  # 最大数据包大小

二、关键配置项详解

1.内存与性能优化

  • innodb_buffer_pool_size
    InnoDB 引擎的核心缓存,存储数据和索引。建议设置为物理内存的 50-80%

  • innodb_flush_log_atwww.chinasem.cn_trx_commit
    控制事务日志刷新策略:

    • 0:每秒写入日志并刷新到磁盘(性能最佳,可能丢失1秒数据)。
    • 1:每次事务提交都写入并刷新(最安全,性能最低)。
    • 2:每次提交写入日志,但每秒刷新到磁盘(折中方案)。
  • key_buffer_size
    MyISAM 表的索引缓存大小(若使用 MyISAM 表需调整)。

2.连接管理

  • max_connections
    最大并发连接数。需根据应用需求调整,过高可能导致内存耗尽。

  • wait_timeoutinteractive_timeout
    非交互式和交互式连接的空闲超时时间(默认28800秒=8小时)。

3.二进制日志(主从复制)

server-id = 1                   # 服务器唯一ID(主从不能重复)
log_bin = /var/log/mysql/mysql-bin.log  # 开启二进制日志
expire_logs_days = 7        javascript    # 日志保留天数
binlog_format = ROW             # 推荐使用ROW格式(数据一致性更强)

4.查询缓存(MySQL 8.0已废弃)

query_cache_type = 0            # 关闭查询缓存(8.0已移除该功能)

5.其他重要配置

  • tmp_table_sizemax_heap_table_size
    控制内存临时表的最大大小,超出后会转为磁盘表。

  • sql_mode
    定义 SQL 严格模式,例如:

    sql_mode = STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
    

三、配置文件示例

[mysqld]
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
port = 3306

# 字符集
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

# InnoDB配置
innodb_buffer_pool_size = 2G
innodb_log_file_size = 512M
innodb_flush_log_at_trx_commit = 2

# 连接管理
max_connections = 300
thread_cache_size = 20
wait_timeout = 600

# 日志
log-error = /var/log/mysql/error.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1

# 安全
skip_name_resolve = 1
secure_file_priv = /var/lib/mysql-files

[client]
default-character-set = utf8mb4

四、注意事项

  1. 修改配置后需重启 MySQL
    sudo systemctl restart mysql   # Linux
    
  2. 验证配置
    通过 SHOW VARIABLES LIKE 'variable_name'; 确认配置生效。
  3. 版本差异
    MySQL 不同版本(如 5.7 vs 8.0)的默认配置或参数可能不同,需参考官方文档。

通过合理配置,可以显著优化 MySQL 的性能和稳定性!

到此这篇关于MySQL配置文件详解的文章就介绍到这了,更多相关MySQL配置文件内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!

这篇关于MySQL的配置文件详解及实例代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1155786

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Java中的.close()举例详解

《Java中的.close()举例详解》.close()方法只适用于通过window.open()打开的弹出窗口,对于浏览器的主窗口,如果没有得到用户允许是不能关闭的,:本文主要介绍Java中的.... 目录当你遇到以下三种情况时,一定要记得使用 .close():用法作用举例如何判断代码中的 input