查看配置# 要查看默认值和自定义配置的值
mysqld --verbose --help
# 查看 mysql 正在使用的参数值
mysqladmin variables
# 只查看默认值
mysqld --no-defaults --verbose --help
常用配置说明
客户端配置[client]
# 客户端的默认连接端口
port=3306
# 本地通信使用的套接字
socket=/run/mysqld/mysqld.sock
# 客户端默认编码
default-character-set=utf8mb4
服务端配置[mysqld]
# 监听端口
port=3306
# 本地通信使用的套接字
socket=/run/mysqld/mysqld.sock
# pid 文件
pid-file=/run/mysqld/mysqld.pid
# 记录启动、关闭、警告、错误等日志
log_error=/var/log/mysql/error.log
# 启动用户
user=mysql
# 数据库程序安装目录
basedir=/usr
# 数据库文件存放目录
datadir=/data
# 临时目录
tmpdir=/tmp
# 跳过 MyISAM 数据表外部锁定
# MyISAM 数据表在多进程共用同一个数据库目录时访问需要锁定
skip-external-locking
# 禁用域名解析
skip-name-resolve
# 禁用端口访问
#skip-networking
# 绑定 ip 地址
bind-address=0.0.0.0
# MyISAM 存储引擎的线程共享索引缓冲区大小
key_buffer_size=64M
# 并发连接时缓存打开表的最大总数
# 每当 MySQL 访问一个表时,如果表缓冲区中还有空间,该表就被打开并放入其中,以此加速访问表
# 通过 SHOW GLOBAL STATUS LIKE 'Open%tables' 检查峰值时间的状态值 Open_tables 和 Opened_tables 来判断是否需要增加 table_open_cache 的值
# 推荐设置值
# Open_tables / Opened_tables >= 0.85
# Open_tables / table_open_cache <= 0.95
table_open_cache=512
# 设置 order by 和 group by 排序操作缓冲区大小
sort_buffer_size=1M
# 服务端最大允许接收的数据包大小
max_allowed_packet=1M
# 数据包缓冲区初始化大小,会根据需要最大增长至 max_allowed_packet
net_buffer_length=8K
# 对 MyISAM 数据表进行顺序扫描时每个线程的缓冲区大小
read_buffer_size=1M
# 对任何数据表随机扫描时每个线程的缓冲区大小
read_rnd_buffer_size=512K
# 在 REPAIR TABLE 期间对 MyISAM 索引进行排序或使用 CREATE INDEX 或 ALTER TABLE 创建索引时分配的缓冲区大小
myisam_sort_buffer_size=16M
# 线程池大小
thread_cache_size=16
# 对于读多写少的环境设置 1 启用查询缓存会对性能有所提升
# 0 默认值,禁用查询缓存
# 1 缓存所有以 SELECT 开头的可缓存查询结果,SELECT SQL_NO_CACHE 除外
# 2 仅缓存以 SELECT SQL_CACHE 开头的可缓存查询结果
query_cache_type=1
# 启用查询缓存时,会缓存 SELECT 语句和对应的结果集,设置查询缓存的大小
query_cache_size=16M
# 内部内存临时表的最大大小,超出限制时会自动将其转换为磁盘上的临时表
tmp_table_size=32M
# 默认为 false 情况下
# 如果 TIMESTAMP 列未指定 NULL 属性,该列会自动添加 NOT NULL 属性,如果向列中插入 NULL 会自动设置为 CURRENT_TIMESTAMP 值
# 如果表中第一个 TIMESTAMP 列未指定 NULL 属性或默认值,也没有指定 ON UPDATE 语句,该列会自动添加 DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP 属性
# 非第一个 TIMESTAMP 列,如果没有指定未指定 NULL 属性和默认值,该列会自动添加 DEFAULT '0000-00-00 00:00:00'属性
explicit_defaults_for_timestamp=true
# 最大并发连接数
max_connections=500
# 允许客户端错误连接最大次数,超过将被拉黑
max_connect_errors=100
# 最大打开文件数
open_files_limit=65535
# 服务器 ID,互相通信的服务器 ID 不允许重复
server-id=1
# 二进制日志,相对于 datadir 路径
log-bin=/var/log/mysql/mysql-bin
#relay_log=/var/log/mysql/mysql-relay-bin
# 二进制日志格式
binlog_format=mixed
# 二进制日志保留天数
expire_logs_days=14
# 设置自增的增量
auto_increment_increment=1
# 设置自增起始值
auto_increment_offset=1
# 默认新数据表的存储引擎
default_storage_engine=InnoDB
# 每个数据库的每个表都会生成一个数据空间(.ibd 文件)
innodb_file_per_table=1
# 如果不指定,则所有 InnoDB TableSpace 文件只能存放在 datadir 中
# 如果指定为空,则可为 InnoDB TableSpace 文件指定不同路径
# 如果指定路径,则所有 InnoDB TableSpace 文件只能存放在指定路径中
#innodb_data_home_dir=
# 设置存储 InnoDB 数据表的表空间存放位置、最大长度等属性
# 每个表空间文件规则用 ; 间隔
# 最后一个表空间可以使用 autoextend 和 max:n 属性
innodb_data_file_path=ibdata1:10M:autoextend
# InnoDB 缓存池大小
innodb_buffer_pool_size=128M
# 指定 InnoDB 事务日志(如 ib_logfile0、ib_logfile1)存放路径
innodb_log_group_home_dir=/var/log/mysql
# 每个 InnoDB 事务日志大小
innodb_log_file_size=64M
# InnoDB 事务日志缓冲区大小
innodb_log_buffer_size=8M
# InnoDB 事务日志同步磁盘时机
# 0 每次 COMMIT 将事务日志写进了日志缓冲区,然后每隔一秒将缓冲区的事务日志同步到磁盘,性能最好,但 mysqld 进程崩溃会导致上一秒钟所有事务数据的丢失
# 1 每次 COMMIT 将事务日志同步到磁盘,mysqld 崩溃不会丢失数据,但频繁的 IO 操作导致效率低下
# 2 每次 COMMIT 将事务日志写进了日志缓冲区并同时写入系统缓冲区,然后每隔一秒将缓冲区的事务日志同步到磁盘, mysqld 崩溃时不会丢失日志,折衷的举措
innodb_flush_log_at_trx_commit=1
# 如果某个事务在等待 n 秒后仍未获得所需要的资源,就执行 ROLLBACK 回滚该事务
innodb_lock_wait_timeout=50
# 默认的编码
character-set-server=utf8mb4
# 默认的排序规则
collation-server=utf8mb4_general_ci
其他配置# mysqldump 工具的配置
[mysqldump]
quick
max_allowed_packet=16M
# mysql 工具的配置
[mysql]
# 自动补全表名、字段名
auto-rehash
prompt="\\u@\\h:\\d \\p>"
default-character-set=utf8mb4
# myisamchk 工具的配置
[myisamchk]
key_buffer_size=64M
sort_buffer_size=1M
read_buffer=2M
write_buffer=2M
# mysqlhotcopy 工具的配置
[mysqlhotcopy]
interactive-timeout