Mysql8配置文件
- 修改`my.cnf`----配置持久化键(persistence key)
- 配置表名不区分大小写
修改my.cnf
----配置持久化键(persistence key)
MySQL8
初始化数据库之前配置好这些变量值,初始化数据库之后可能无法修改
这个值。
# 服务端配置
[mysqld]
######## 数据目录和基础配置
# 源码安装的mysql8需要指定mysql安装目录
# basedir=/usr/local/mysql
# 数据库文件存储目录。
datadir=/var/lib/mysql
# MySQL 进程监听的 Unix 套接字文件路径。
socket=/var/run/mysqld/mysqld.sock
# 指定运行 MySQL 进程的用户身份。
user=mysql
# 指定MySQL服务进程ID文件的路径
pid-file=/var/run/mysqld/mysqld.pid
# 指定安全文件目录,只有在该目录下的文件才可被导入/导出。
secure-file-priv=/var/lib/mysql-files# 设置默认时区为东八区
default-time-zone='+8:00'######### 网络与连接
# mysql服务绑定的本机哪个IP地址
bind-address=127.0.0.1
# 禁用 DNS 查询结果缓存,这对于高负载的 MySQL 服务器来说是很重要的,因为它可以减少 DNS 延迟和负载。
host_cache_size=0
# 禁用主机名解析,这也可以提高 MySQL 服务器的性能,因为当客户端连接到服务器时,会先进行主机名解析,而禁用它可以加速连接进程。
# 只能用IP地址检查客户端的登录,不用主机名
skip-name-resolve
# 最大连接数
max_connections=400
# 最大错误连接数
max_connect_errors=1000
wait_timeout = 600 # 非交互连接超时(默认8小时过长)
interactive_timeout = 60 # 交互式连接超时######### 字符集与时区
# 服务端指定字符集
character-set-server=utf8mb4
# 服务端使用的字符序
# https://www.cnblogs.com/chyingp/p/mysql-character-set-collation.html
collation-server=utf8mb4_unicode_ci
# 指定默认时区
default-time-zone='+8:00'# 执行SQL语句时所应该遵守的规则
## STRICT_TRANS_TABLES:当插入数据时,如果出现字段类型不匹配、值超出范围等情况,将产生严格的警告或错误。
## NO_ZERO_IN_DATE:防止在日期或日期时间字段中使用0作为数值的填充。
## NO_ZERO_DATE:防止在日期或日期时间字段中插入'0000-00-00'的空白日期格式。
## ERROR_FOR_DIVISION_BY_ZERO:禁用除数为零的操作,并将其视为错误。
## NO_ENGINE_SUBSTITUTION:如果需要连接的存储引擎不存在或不可用,则不自动替换为其他存储引擎。
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION# ========================
# [InnoDB 性能优化]
# ========================
# 指定InnoDB缓冲池大小,单位为字节
## 关键!建议设为物理内存70%-80%(原200M过低)
innodb_buffer_pool_size=700M
innodb_flush_log_at_trx_commit = 1 # 1=严格持久化(安全),2=折中性能
innodb_log_buffer_size = 64M # 默认16M,大事务可提升
innodb_flush_method = O_DIRECT # 避免双缓冲
innodb_thread_concurrency = 0 # 自动调整并发线程# ========================
# [日志配置]
# ========================
# 错误日志路径
log-error=/var/log/mysqld.log
# 指定日志输出方式,可以为FILE、TABLE等。
log-output=FILE
# 指定是否启用慢查询日志:ON开启
slow_query_log=ON
# 指定慢查询日志文件的路径
# slow_query_log_file=/var/log/query.err
# 指定慢查询的最小时间(s)
long_query_time=2
log_queries_not_using_indexes = ON # 记录无索引查询
# 禁用常规查询日志。
general_log=0
# 指定常规查询日志文件的路径
# general_log_file=/var/log/general.err# bin-log二进制日志(主从复制/数据恢复)
# server-id = 1
# log-bin = /var/log/mysql/mysql-bin.log
# binlog_format = ROW# ========================
# [安全与兼容性]
# ========================
# 认证插件
# 使用旧版mysql5的密码认证插件,支持简单密码
## mysql_native_password(传统模式,兼容旧客户端)
## caching_sha2_password(MySQL 8.0+ 默认)
## sha256_password
authentication_policy=mysql_native_password
# 指定是否启用严格模式下的时间戳
# TIMESTAMP如果没有显示声明NOT NULL,允许NULL值
## 配置 true| 1 ,false | 0
explicit_defaults_for_timestamp=true# ========================
# [高级性能参数]
# ========================
# SQL数据包发送的大小,如果有BLOB(二进制大对象)建议修改成1G
## BLOB用来存图像、音频和视频等文件
# max_allowed_packet=1G
# 指定单个MySQL包的最大大小,单位为字节(根据BLOB需求调整)
max_allowed_packet=64M
tmp_table_size = 64M # 临时表内存大小
max_heap_table_size = 64M # 内存表最大值
# 连接缓冲
back_log = 512 # 短连接高并发场景需增大
thread_cache_size = 32 # 减少线程创建开销# ========================
# [事务隔离参数]
# ========================
# 事务隔离级别设为读已提交
## mysql默认可重复读级别repeatable read(此级别下可能参数很多间隙锁,影响性能)
transaction_isolation=READ-COMMITTED# 初始化连接时的字符集
## 若存在不可控客户端连接或需强化字符集统一性(如公有云数据库服务)
#init_connect='SET NAMES utf8mb4'# 对其他远程连接的mysql客户端的配置
[mysql]
# 远程连接的客户端指定字符集
default-character-set=utf8mb4# 对localhost的mysql客户端的配置
[client]
# 客户端连接 MySQL 的套接字文件路径。
socket=/var/run/mysqld/mysqld.sock
# 指定MySQL客户端使用的字符集
default-character-set=utf8mb4# 导入其他配置文件。
# !includedir /etc/mysql/conf.d/
# !includedir /etc/mysql/mysql.conf.d/
检查mysql配置
# 检查配置文件语法
mysqld --validate-config
配置表名不区分大小写
SQL语句和列名不区分大小写,SQL的表名是默认区分大小写
的。
可以修改变量来不区分表名大小写;
0:表示表名区分大小写;
1:表示表名不区分大小写,但在存储和比较时仍保留原始名称的大小写形式;
2:表示表名不区分大小写,并将所有表名转换为小写。
编辑/etc/my.cnf
;
或 /etc/mysql/my.cnf
;
或 my.ini
;
或/etc/my.cnf.d/my.cnf
;
在 [mysqld]
段添加:
# 表名不区分大小写
lower_case_table_names=1