MySQL 的配置文件有多个,不同的配置文件有不同的用途,但是配置方法是一致的。本节介绍了常用的配置文件以及配置方法。
与配置文件有关的选项
配置文件的处理顺序
MySQL 的配置文件基本都是纯文本格式,但是也有例外,如 .mylogin.cnf 和 mysqld-auto.cnf。
以下配置文件按照从上到下的顺序先后进行处理:
- /etc/my.cnf
-
/etc/mysql/my.cnf
-
SYSCONFDIR/my.cnf
-
$MYSQL_HOME/my.cnf
-
defaults-extra-file
-
~/.my.cnf
-
~/.mylogin.cnf
- 登录路径文件,由 mysql_config_editor 创建的加密文件,包括主机、用户、密码、端口和 socket
- 通过 –login-path 指定登录路径
- DATADIR/mysqld-auto.cnf
- 在数据目录中以 JSON 格式存在,包含持久的系统变量设置
-
是由
SET PERSIST
或SET PERSIST_ONLY
语句创建的,由服务器自动管理mysql> set persist autocommit=off;
查看数据目录下的 mysqld-auto.cnf 文件
[root@yingzai data]$ more mysqld-auto.cnf { "Version" : 1 , "mysql_server" : { "autocommit" : { "Value" : "OFF" , "Metadata" : { "Timestamp" : 1614653 797458761 , "User" : "root" , "Host" : "localhost" } } } }
具体选项
[root@yingzai ~]$ mysqld --help --verbose
- –defaults-extra-file=file_name
- 额外的配置文件
- –defaults-file=file_name
- 默认配置文件
- –defaults-group-suffix=str
- 读取带有 xtr 后缀的组
- –login-path=name
- 登录路径的选项组,可以将登录密码配置到这个文件中
- –no-defaults
- 不读取任何配置文件
- –print-defaults
[root@yingzai ~]mysql --print-defaults mysql would have been started with the following arguments: --user=root --password=***** --socket=/tmp/mysql.sock --ssl_mode=PREFERRED --compression_algorithms=zstd,uncompressed --zstd_compression_level=3 [root@yingzai ~] mysqld --print-defaults /opt/mysql-8.0.23-linux-glibc2.12-x86_64/bin/mysqld would have been started with the following arguments: --basedir=/opt/mysql --datadir=/mdata/data --server_id=1 --user=mysql --port=3306 --socket=/tmp/mysql.sock --ssl_ca=ca.pem --ssl_cert=server-cert.pem --ssl_fips_mode=OFF --ssl_key=server-key.pem --tls_version=TLSv1,TLSv1.1,TLSv1.2,TLSv1.3 --protocol_compression_algorithms=zstd,uncompressed
- 打印程序名称和配置文件中的参数
配置方法
语法
[mysql]
# 建立连接
user = root
#host=172.16.0.40
password = root
#protocol=TCP
#port=3306
socket = /tmp/mysql.sock
# 加密连接
ssl_mode = PREFERRED
# 连接压缩
compression_algorithms = zstd,uncompressed # 算法
zstd_compression_level = 3 # zstd算法的压缩级别
- 注释
- 配置文件中的注释以
#
或;
开头 - 以
#
开头的注释可以放在行中的位置
- 配置文件中的注释以
- [group]
- 选项组 (标签组) 的名称不区分大小写,如 [mysqld]、[MYSQLD]
-
如果 group 的名称与程序名称相同,则这个 group 中的选项只适用于该程序。
例如,[mysqld] 只应用于 mysqld 服务端,[mysql] 只应用于mysql 客户端,[client] 应用于所有客户端程序,[mysqldump] 只应用于 mysqldump。
-
如果出现重复选项,后面的会覆盖前面的
-
标签归类
按照服务器端和客户端程序名称划分。
- 服务器端
- [mysqld]、[mysqld_safe]、[server] 等
- 客户端
- [mysql]、[mysqladmin]、[mysqldump]、[client] 等
- 服务器端
- opt_name
- 等同于命令行参数 –opt_name
- opt_name=value
=
前后可以有空格- value 值可以用
''
或""
引起来
示例
- 全局配置
[client] port=3306 socket=/tmp/mysql.sock [mysqld] port=3306 socket=/tmp/mysql.sock key_buffer_size=16M max_allowed_packet=8M [mysqldump] quick
- 应用于特定的 mysqld 版本
[mysqld-8.0] sql_mode=TRADITIONAL
- 指定密码
[client] # The following password is sent to all standard MySQL clients password="my password" [mysql] no-auto-rehash connect_timeout=2
- 指定包含的文件或目录
!include /home/mydir/myopt.cnf !includedir /home/mydir
Note: 目录中的配置文件必须以
.cnf
结尾,才会被查找到。