MySQL 配置文件

MySQL 配置文件

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 PERSISTSET 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 结尾,才会被查找到。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注