[mysql.server]有那些配置:
[mysql.server]
部分用于配置 MySQL 服务端的启动脚本 mysql.server
的行为,主要是用于控制 MySQL 服务在启动和停止时的配置选项。在实际使用中,它不是一个非常常见的配置部分,但有一些配置参数可以放置在这里,影响 mysql.server
启动脚本的行为。
以下是 [mysql.server]
部分的一些常见配置选项:
1. basedir
-
描述:指定 MySQL 安装的基础目录,也就是 MySQL 程序文件所在的目录。
-
示例:
[mysql.server] basedir=/usr/local/mysql
2. datadir
-
描述:指定 MySQL 数据文件的存储路径。这个目录存放所有的数据库文件和日志文件。
-
示例:
[mysql.server] datadir=/usr/local/mysql/data
3. pid-file
-
描述:指定 MySQL 运行时生成的 PID 文件的位置,PID 文件用于记录 MySQL 进程的进程 ID。
-
示例:
[mysql.server] pid-file=/usr/local/mysql/data/mysqld.pid
4. port
-
描述:指定 MySQL 服务器监听的端口号。默认端口是
3306
,可以根据需要更改。 -
示例:
[mysql.server] port=3306
5. socket
-
描述:指定 MySQL 的 Unix 套接字文件路径,这个配置一般用于本地连接时,客户端通过套接字文件而不是网络端口连接到 MySQL 服务器。
-
示例:
[mysql.server] socket=/tmp/mysql.sock
6. log-error
-
描述:指定错误日志文件的路径,用于记录 MySQL 启动和运行中的错误信息。
-
示例:
[mysql.server] log-error=/usr/local/mysql/data/mysqld.err
7. user
-
描述:指定运行 MySQL 守护进程的用户。为了安全,通常会将 MySQL 设置为一个专门的用户(如
mysql
用户)来运行,而不是使用 root 用户。 -
示例:
[mysql.server] user=mysql
8. tmpdir
-
描述:指定 MySQL 的临时文件存储目录。MySQL 在运行时会创建一些临时文件,这个参数用来指定这些临时文件的存储位置。
-
示例:
[mysql.server] tmpdir=/tmp
9. lc-messages-dir
-
描述:指定 MySQL 错误消息的本地化文件目录。
-
示例:
[mysql.server] lc-messages-dir=/usr/local/mysql/share
10. default-time-zone
-
描述:设置 MySQL 服务器的默认时区。
-
示例:
[mysql.server] default-time-zone='+00:00'
其他可能的选项:
虽然 [mysql.server]
部分不是 MySQL 配置文件中最常用的部分,但如果你需要在启动脚本运行时控制 MySQL 服务器的行为,可以在这个部分添加与 mysqld
相关的配置选项。大多数配置选项与 [mysqld]
部分的参数是相同的。
在 macOS 或其他使用 mysql.server
脚本启动 MySQL 的环境下,可以在 /etc/my.cnf
文件中配置这些参数,确保 MySQL 按照你的需求启动和运行。
[server]有那些配置:
[server]
部分在 MySQL 配置文件中主要是用于定义服务器的通用配置选项。与 [mysqld]
类似,它影响 MySQL 服务器的行为。虽然这个部分使用得不如 [mysqld]
常见,但它也允许配置一些 MySQL 服务端的关键参数。
在 MySQL 的标准配置中,[server]
组实际上并不是官方文档中定义的标准配置区块。MySQL 通常使用以下主要配置区块:
[mysqld]
:用于定义 MySQL 服务器的参数。[client]
:用于定义 MySQL 客户端的参数。[mysql]
:用于 MySQL 命令行工具的参数。
不过,在某些 MySQL 发行版或一些特定场景中,[server]
组可能被自定义用作特定配置,但这些配置实际上应该归属于 mysqld
组。严格来说,MySQL 官方不推荐使用 [server]
作为配置区块。
[server]
部分的一些常见配置选项:
1. basedir
-
描述:指定 MySQL 安装的基础目录,也就是 MySQL 程序文件所在的位置。
-
示例:
[server] basedir=/usr/local/mysql
2. datadir
-
描述:指定 MySQL 数据文件的存储目录。所有的数据库和日志文件都会存储在这个目录下。
-
示例:
[server] datadir=/var/lib/mysql
3. port
-
描述:指定 MySQL 服务器监听的端口号,默认是 3306。
-
示例:
[server] port=3306
4. socket
-
描述:指定 Unix 套接字文件的路径,本地连接 MySQL 服务器时会用到它。
-
示例:
[server] socket=/var/run/mysqld/mysqld.sock
5. pid-file
-
描述:指定 MySQL 服务器运行时生成的 PID 文件路径。PID 文件用于记录 MySQL 进程的进程 ID。
-
示例:
[server] pid-file=/var/run/mysqld/mysqld.pid
6. tmpdir
-
描述:指定 MySQL 临时文件的存储目录。MySQL 在执行某些操作时会生成临时文件。
-
示例:
[server] tmpdir=/tmp
7. lc-messages-dir
-
描述:指定 MySQL 错误和信息消息的本地化语言文件所在的目录。
-
示例:
[server] lc-messages-dir=/usr/share/mysql
8. log-error
-
描述:定义 MySQL 错误日志文件的存储路径。
-
示例:
[server] log-error=/var/log/mysql/error.log
9. default-time-zone
-
描述:指定 MySQL 服务器的默认时区。
-
示例:
[server] default-time-zone='+00:00'
10. max_connections
-
描述:定义允许的最大并发连接数。默认值通常是 151,可以根据实际需求调整。
-
示例:
[server] max_connections=200
11. sql_mode
-
描述:指定 MySQL 的 SQL 模式,控制 SQL 语法的行为(例如是否启用严格模式等)。常用值包括
STRICT_TRANS_TABLES
、NO_ENGINE_SUBSTITUTION
等。 -
示例:
[server] sql_mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"
12. character-set-server
-
描述:指定 MySQL 服务器的默认字符集。
-
示例:
[server] character-set-server=utf8mb4
13. collation-server
-
描述:指定 MySQL 服务器默认的字符集排序规则。
-
示例:
[server] collation-server=utf8mb4_unicode_ci
14. innodb_buffer_pool_size
-
描述:定义 InnoDB 存储引擎的缓冲池大小,它对数据库性能至关重要,通常占用可用内存的很大一部分。
-
示例:
[server] innodb_buffer_pool_size=2G
其他配置项
[server]
部分的一些配置选项与 [mysqld]
部分是相通的,很多配置都可以在这两个部分中定义。[server]
主要用于 MySQL 服务端的全局设置,它适用于 MySQL 服务器的基本配置,尤其是在希望为多个服务定义共同的参数时。
一般情况下,大部分服务端相关的配置项更常见于 [mysqld]
部分,如果是希望影响具体的服务行为,可以直接在 [mysqld]
部分进行配置。不过,如果需要全局共享某些选项,[server]
也可以用作一个集中式的配置部分。
整理一下[mysqld]的参数
[mysqld] 参数汇总
以下是 MySQL 配置文件中 [mysqld]
部分的一些常见配置参数,适用于调整 MySQL 服务器的性能、日志记录、存储引擎、网络设置等。这些参数根据你的需求和服务器环境可进行优化和调整。
[mysqld]
# 基础设置
basedir=/usr/local/mysql # MySQL 安装目录
datadir=/var/lib/mysql # MySQL 数据目录
port=3306 # MySQL 监听端口
socket=/var/lib/mysql/mysql.sock # Unix socket 文件路径
pid-file=/var/run/mysqld/mysqld.pid # 进程 ID 文件路径
# 性能优化
max_connections=200 # 最大连接数
thread_cache_size=16 # 线程缓存大小
innodb_buffer_pool_size=2G # InnoDB 缓冲池大小(常设为内存的 70%-80%)
innodb_log_file_size=512M # InnoDB 日志文件大小
innodb_flush_log_at_trx_commit=1 # 控制事务提交的持久性
table_open_cache=2000 # 表缓存大小
query_cache_size=0 # 查询缓存大小(MySQL 8.0 已废弃)
query_cache_type=0 # 关闭查询缓存(MySQL 8.0 已废弃)
# 日志记录
log-error=/var/log/mysql/error.log # 错误日志文件路径
slow_query_log=1 # 启用慢查询日志
slow_query_log_file=/var/log/mysql/slow.log # 慢查询日志文件路径
long_query_time=2 # 定义慢查询的阈值(秒)
log-bin=/var/log/mysql/mysql-bin.log # 启用二进制日志并指定日志路径
expire_logs_days=7 # 二进制日志的保留天数
max_binlog_size=500M # 单个二进制日志文件的最大大小
sync_binlog=1 # 控制 binlog 同步的频率,1 为每个事务同步
# 安全性设置
skip-symbolic-links=1 # 禁用符号链接
bind-address=127.0.0.1 # 仅监听本地连接
secure-file-priv=/var/lib/mysql-files # 限制文件导入导出操作的路径
# 复制和日志设置
server-id=1 # 唯一的服务器 ID,用于主从复制
relay-log=/var/log/mysql/mysql-relay-bin.log # 中继日志文件
log_slave_updates=1 # 从库记录主库的更新
binlog_format=ROW # 二进制日志格式为基于行的记录
# 存储引擎和字符集
default-storage-engine=InnoDB # 默认存储引擎
character-set-server=utf8mb4 # 设置服务器的默认字符集
collation-server=utf8mb4_unicode_ci # 默认字符集排序规则
lower_case_table_names=1 # 表名不区分大小写
# 事件调度
event_scheduler=ON # 启用事件调度器
主要参数说明:
基础设置
basedir
:MySQL 安装路径。datadir
:MySQL 数据文件存储路径。port
:MySQL 监听的端口,默认是 3306。socket
:用于本地连接的 Unix 套接字文件路径。pid-file
:存储 MySQL 进程 ID 的文件路径。
性能优化
max_connections
:设置允许的最大客户端并发连接数。innodb_buffer_pool_size
:InnoDB 缓冲池大小,决定缓存数据的数量。thread_cache_size
:定义线程缓存的大小,减少线程创建的开销。innodb_log_file_size
:InnoDB 日志文件大小,影响崩溃恢复速度。table_open_cache
:表缓存大小,影响数据库打开表的速度。
日志记录
log-error
:错误日志文件路径,用于记录 MySQL 启动、停止和运行时的错误。slow_query_log
:启用慢查询日志。log-bin
:启用二进制日志,用于数据恢复和主从复制。expire_logs_days
:二进制日志保留天数。sync_binlog
:控制二进制日志的同步频率,1
为每次事务提交都同步,确保数据安全。
安全性设置
skip-symbolic-links
:禁用符号链接,防止不安全的访问。bind-address
:限制 MySQL 只监听本地 IP(127.0.0.1
)。secure-file-priv
:限制文件导入导出操作的路径。
复制设置
server-id
:在主从复制中,每个服务器必须有唯一的server-id
。binlog_format
:设置二进制日志格式为ROW
,记录每一行数据的变更。
存储引擎和字符集
default-storage-engine
:设置 MySQL 的默认存储引擎为InnoDB
。character-set-server
:设置 MySQL 服务器的默认字符集为utf8mb4
。collation-server
:设置字符集的默认排序规则。
事件调度
event_scheduler
:启用事件调度器。
总结
[mysqld]
部分是 MySQL 服务器配置的核心,涉及到数据库性能、日志记录、安全性和复制等方面的设置。
需要注意的一点是, mysqld_safe 和 mysql.server 这两个程序在启动时都会读取 [mysqld] 选项组中的内容。
为了直观感受一下,我们挑一些启动命令来看一下它们能读取的选项组都有哪些:
启动命令
启动命令 类别 能读取的组
mysqld 启动服务器 [mysqld] 、 [server]
mysqld_safe 启动服务器 [mysqld] 、 [server] 、 [mysqld_safe]
mysql.server 启动服务器 [mysqld] 、 [server] 、 [mysql.server]
mysql 启动客户端 [mysql] 、 [client]
mysqladmin 启动客户端 [mysqladmin] 、 [client]
mysqldump 启动客户端 [mysqldump] 、 [client]
启动mysql服务端一般都是用的mysql.server 命令获取mysqld命令,剩下的组的配置细节小伙伴们自己探索一下吧