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

相关文章

Java利用@SneakyThrows注解提升异常处理效率详解

《Java利用@SneakyThrows注解提升异常处理效率详解》这篇文章将深度剖析@SneakyThrows的原理,用法,适用场景以及隐藏的陷阱,看看它如何让Java异常处理效率飙升50%,感兴趣的... 目录前言一、检查型异常的“诅咒”:为什么Java开发者讨厌它1.1 检查型异常的痛点1.2 为什么说

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

springboot2.1.3 hystrix集成及hystrix-dashboard监控详解

《springboot2.1.3hystrix集成及hystrix-dashboard监控详解》Hystrix是Netflix开源的微服务容错工具,通过线程池隔离和熔断机制防止服务崩溃,支持降级、监... 目录Hystrix是Netflix开源技术www.chinasem.cn栈中的又一员猛将Hystrix熔

Python多线程实现大文件快速下载的代码实现

《Python多线程实现大文件快速下载的代码实现》在互联网时代,文件下载是日常操作之一,尤其是大文件,然而,网络条件不稳定或带宽有限时,下载速度会变得很慢,本文将介绍如何使用Python实现多线程下载... 目录引言一、多线程下载原理二、python实现多线程下载代码说明:三、实战案例四、注意事项五、总结引

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

Java调用Python脚本实现HelloWorld的示例详解

《Java调用Python脚本实现HelloWorld的示例详解》作为程序员,我们经常会遇到需要在Java项目中调用Python脚本的场景,下面我们来看看如何从基础到进阶,一步步实现Java与Pyth... 目录一、环境准备二、基础调用:使用 Runtime.exec()2.1 实现步骤2.2 代码解析三、

MySQL按时间维度对亿级数据表进行平滑分表

《MySQL按时间维度对亿级数据表进行平滑分表》本文将以一个真实的4亿数据表分表案例为基础,详细介绍如何在不影响线上业务的情况下,完成按时间维度分表的完整过程,感兴趣的小伙伴可以了解一下... 目录引言一、为什么我们需要分表1.1 单表数据量过大的问题1.2 分表方案选型二、分表前的准备工作2.1 数据评估

SQL Server 查询数据库及数据文件大小的方法

《SQLServer查询数据库及数据文件大小的方法》文章介绍了查询数据库大小的SQL方法及存储过程实现,涵盖当前数据库、所有数据库的总大小及文件明细,本文结合实例代码给大家介绍的非常详细,感兴趣的... 目录1. 直接使用SQL1.1 查询当前数据库大小1.2 查询所有数据库的大小1.3 查询每个数据库的详

python之uv使用详解

《python之uv使用详解》文章介绍uv在Ubuntu上用于Python项目管理,涵盖安装、初始化、依赖管理、运行调试及Docker应用,强调CI中使用--locked确保依赖一致性... 目录安装与更新standalonepip 安装创建php以及初始化项目依赖管理uv run直接在命令行运行pytho

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.