🤩 MySQL-07-MySQL配置文件
🤩 MySQL-07-MySQL配置文件
1 开篇介绍
👋 Hello 大家好,我是 Nagase ,MySQL 从删库到跑路 ,又到了学习 MySQL 的时刻,接下来就让我们感受一下 MySQL 独特的魅力吧。
在之前的学习中,我们知道了 my.ini 、my.cnf 是 MySQL 使用的配置文件,MySQL 启动的时候会读取该配置文件,我们可以通过修改该配置文件来自定义 MySQL 的启动。
注意⚠️:修改完配置文件之后一定要记得重启 MySQL 服务!!!
在该篇博客中,我们主要介绍 MySQL 配置文件 相关的内容,祝你学的开心 🥳 。
2 配置文件路径
2.1 Windows 平台
Windows 平台的配置文件一般在 MySQL 的安装根目录下。
Windows 平台下的配置文件也可以放在如下任意路径中,如下图所示:
注意事项⚠️
在安装根目录下可能会发现没有 my.ini 这个配置文件,只有 my-default.ini 这个文件,这个文件是配置文件的模版文件,我们只需要将此文件复制一下,并重命名为 my.ini 即可!!!
如果连 my-default.ini 都没有,那么直接新建一个 my.ini 文件即可!!!
2.2 macOS 平台
macOS 平台安装完 MySQL 之后不会主动提供配置文件,因为 macOS 使用的是最优配置,如果想要自定义配置,那么需要手动创建 my.cnf 配置文件。
那么在哪里创建呢?通过 mysql --help
命令查看 my.cnf 的读取优先级,如下图所示:
因此只要我们在这些路径中任意选择一个创建 my.cnf 即可。
2.3 Linux 平台
Linux 平台的配置文件一般是在 /etc/my.cnf
但是我们也可以在其他路径中编辑配置文件,如下图所示:
3 验证程序在启动前会先读取配置文件
编辑 my.ini 文件内容。
[mysqld]
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql]
print('Hello World!') # 这是Python的语法,如果运行客户端之后报错,则证明确实是程序在运行之前会先读取配置文件
注意,更改配置文件之后一定要重新启动服务端才可以!重启完成之后再次登录客户端,会发现如下报错信息:
C:\Windows\system32>mysql -u root -p
mysql: unknown option '--print('Hello World!')'
这就证明了,程序在启动之前先读取了配置文件。
4 配置文件内容
[mysqld] # 一旦服务端启动立刻加载下面的配置
...
[mysql] # 一旦自己的客户端启动立刻加载下面的配置
...
[client] # 其他客户端的配置
...
[mysqld] 服务端参数配置
参数名称 | 说明 |
---|---|
lower_case_table_names | 值为0代表表名存储为给定的大小和比较是区分大小写的;值为1代表表名存储在磁盘是小写的,但是比较的时候是不区分大小写;值为2代表表名存储为给定的大小写但是比较的时候是小写的(UNIX、Linux下 lower_case_table_names 默认值为 0 。Windows下默认值是 1 。macOS 下默认值是 2) |
port | 表示 MySQL 服务器的端口号 |
basedir | 表示 MySQL 的安装路径 |
datadir | 表示 MySQL 数据文件的存储位置,也是数据表的存放位置 |
default-character-set | 表示服务器端默认的字符集 |
default-storage-engine | 创建数据表时,默认使用的存储引擎 |
sql-mode | 表示 SQL 模式的参数,通过这个参数可以设置检验 SQL 语句的严格程度 |
max_connections | 表示允许同时访问 MySQL 服务器的最大连接数。其中一个连接是保留的,留给管理员专用的 |
query_cache_size | 表示查询时的缓存大小,缓存中可以存储以前通过 SELECT 语句查询过的信息,再次查询时就可以直接从缓存中拿出信息,可以改善查询效率 |
table_open_cache | 表示所有进程打开表的总数 |
tmp_table_size | 表示内存中每个临时表允许的最大大小 |
thread_cache_size | 表示缓存的最大线程数 |
myisam_max_sort_file_size | 表示 MySQL 重建索引时所允许的最大临时文件的大小 |
myisam_sort_buffer_size | 表示重建索引时的缓存大小 |
key_buffer_size | 表示关键词的缓存大小 |
read_buffer_size | 表示 MyISAM 表全表扫描的缓存大小 |
read_rnd_buffer_size | 表示将排序好的数据存入该缓存中 |
sort_buffer_size | 表示用于排序的缓存大小 |
5 lower_case_table_names 参数
5.1 参数说明
lower_case_table_names
是 MySQL 设置大小写是否敏感的一个参数。
lower_case_table_names=0 表名存储为给定的大小和比较是区分大小写的
lower_case_table_names = 1 表名存储在磁盘是小写的,但是比较的时候是不区分大小写
lower_case_table_names=2 表名存储为给定的大小写但是比较的时候是小写的
**Linux 平台中默认值是 0 **
**Windows 平台中默认值是 1 **
macOS 平台中默认值是 2
5.2 查看当前参数的值
登录到 MySQL 客户端,然后输入命令:SHOW VARIABLES WHERE Variable_name = 'lower_case_table_names';
5.3 更改方法
更改配置文件 lower_case_table_names
参数的值,然后重启 MySQL 服务即可。
5.4 生产环境中注意事项
由于在生产环境中,搭载 MySQL 数据服务的平台一般都是 Linux 平台,因此,初始化的时候默认采用了 0 ,即 存储为给定的大小写并且区分大小写。
这样就带来了一个弊端:同一个实例中有可能包含大小写都存在的数据库或者表,这样的话,在调用的时候一定要注意大小写。