今天在修改MySQL 8.0配置文件的时候,发现了一个奇怪的现象。
在 /etc/mysql/mysql.conf.d/mysqld.cnf 这个文件中,有些配置是以连字符(-)连接的,例如
# Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. bind-address = 127.0.0.1 mysqlx-bind-address = 127.0.0.1
同时,也有以下划线(_)连接的,例如
# Log all queries # Be aware that this log type is a performance killer. # general_log_file = /var/log/mysql/query.log # general_log = 1
我当时就感觉很奇怪,MySQL有很多人都在用,怎么可能会这么随意的命名呢?于是按耐不住好奇心准备去网上查一下。
不知道是我的关键词没有搜对还是怎么的,能够找到的参考资料实在不多。
下面这几个是我找到的几个为数不多的refer:
MySql配置文件my.cnf下划线:https://bbs.csdn.net/topics/380018765
my.cnf 配置 中杠 与 下划线 不一致问题:https://blog.csdn.net/u011665746/article/details/79067637
MySQL官方文档:http://dev.mysql.com/doc/mysql/en/server-system-variables.html
(打开时会跳转到:https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html )
初步得到的答案是:两种写法都支持。
就拿第一个配置项来说(如下图):
他的系统变量名是(System Variable)使用 _ 连接的,而命令行格式(Command-Line Format)是使用 - 连接的。后面的所有变量名都是同理。
总的来说,其实也不是什么大问题,因为MySQL这两种写法都支持,如果说有mysqld无法识别的配置,MySQL他也启动不起来,所以说我们在实际使用的时候也不需要过于担心。
在最后,随便说说,其实我一开始猜测下划线和连字符可能是用来区分这个设置项能否动态设置或者其他什么的,所以我把 /etc/mysql/mysql.conf.d/mysqld.cnf 这个文件中出现的所有配置项都整理了一下,形成了文末这个表格(可能呈现在网页上效果不太好,所以也一并附上图片)
表中表绿的是 mysqld.cnf 中使用连字符配置的项,标黄的是使用下划线配置的项,白色的为不存在连字符和下划线的配置项。
似乎连字符和下划线并没有什么必然的联系,不过好像虽然多数符合我的猜测,但也有一些是例外。或许还有一种可能就是连字符的配置项是必须配置的?不过好像也可能性不大。如果您有更好的思路欢迎跟我一起交流~
Command-Line Format | System Variable | Scope | Dynamic | SET_VAR Hint Applies | Type | ||
连字符 | pid-file | --pid-file=file_name | pid_file | Global | No | No | File name |
socket | --socket={file_name|pipe_name} | socket | Global | No | No | String | |
port | --port=port_num | port | Global | No | No | Integer | |
datadir | --datadir=dir_name | datadir | Global | No | No | Directory name | |
tmpdir | --tmpdir=dir_name | tmpdir | Global | No | No | Directory name | |
连字符 | bind-address | --bind-address=addr | bind_address | Global | No | No | String |
连字符 | mysqlx-bind-address | ||||||
下划线 | key_buffer_size | --key-buffer-size=# | key_buffer_size | Global | Yes | No | Integer |
下划线 | max_allowed_packet | --max-allowed-packet=# | max_allowed_packet | Global, Session | Yes | No | Integer |
下划线 | thread_stack | --thread-stack=# | thread_stack | Global | No | No | Integer |
下划线 | thread_cache_size | --thread-cache-size=# | thread_cache_size | Global | Yes | No | Integer |
连字符 | myisam-recover-options | --myisam-recover-options[=list] | myisam_recover_options | Global | No | No | Enumeration |
下划线 | max_connections | --max-connections=# | max_connections | Global | Yes | No | Integer |
下划线 | table_open_cache | --table-open-cache=# | table_open_cache | Global | Yes | No | Integer |
下划线 | general_log_file | --general-log-file=file_name | general_log_file | Global | Yes | No | File name |
下划线 | general_log | --general-log[={OFF|ON}] | general_log | Global | Yes | No | Boolean |
下划线 | log_error | --log-error[=file_name] | log_error | Global | No | No | File name |
下划线 | slow_query_log | --slow-query-log[={OFF|ON}] | slow_query_log | Global | Yes | No | Boolean |
下划线 | slow_query_log_file | --slow-query-log-file=file_name | slow_query_log_file | Global | Yes | No | File name |
下划线 | long_query_time | --long-query-time=# | long_query_time | Global, Session | Yes | No | Numeric |
连字符 | log-queries-not-using-indexes | --log-queries-not-using-indexes[={OFF|ON}] | log_queries_not_using_indexes | Global | Yes | No | Boolean |
连字符 | server-id | ||||||
下划线 | log_bin | ||||||
下划线 | binlog_expire_logs_seconds | ||||||
下划线 | max_binlog_size | ||||||
下划线 | binlog_do_db | ||||||
下划线 | binlog_ignore_db |
本站文章除注明转载/出处外,均为原创,若要转载请务必注明出处。转载后请将转载链接通过邮件告知我站,谢谢合作。本站邮箱:admin@only4.work
尊重他人劳动成果,共创和谐网络环境。点击版权声明查看本站相关条款。