MySQL —— 配置文件

embedded/2024/12/2 23:04:01/

前一篇文章:MySQL —— MySQL 程序-CSDN博客

目录

·前言

一、使用方法

二、配置文件位置及加载顺序

1.在 Windows 系统中读取配置文件

2.在 Linux 系统中读取配置文件

三、配置文件语法

四、案例:设置客户端全局编码格式

·总结


·前言

        本篇文章要介绍的是 MySQL 中的配置文件的相关内容。大多数 MySQL 程序都可以从配置文件(选项文件)中读取启动配置,可以在配置文件中指定常用配置,这样就不用在每次运行程序时都在命令行中输入它们。大部分配置文件都是纯文本格式,可以使用任何编辑器来进行创建。

一、使用方法

        我们可以在连接数据库的时候使用选项 --defaults-file 指定我们要使用的配置文件,这样客户端程序就会读取并应用配置文件中相关的配置,命令如下所示:

# Linux 下的命令格式
mysql --defaults-file=/etc/mysql/my.cnf -uroot -p# windows 下的命令格式
mysql "--defaults-file=C:\ProgramData\MySQL\MySQL Server 5.7\my.ini" -uroot -p

二、配置文件位置及加载顺序

1.在 Windows 系统中读取配置文件

        在 Windows 系统中,配置文件的默认路径是:C:\ProgramData\MySQL\MySQL Server 5.7\my.ini,这里的 ProgramData 是一个隐藏文件夹,所以查看的时候要点击显示隐藏文件夹,配置文件的默认位置如下图所示:

        在我们修改配置文件之前一定要先把配置文件复制一份,防止修改错误之后无法复原。

        MySQL 在 Windows 系统中查找并读取配置文件的顺序如下表所示,如果配置文件不存在则需要手动创建,读取的顺序按照表格从上到下来读取,后读取的文件中配置的选项优先级会更高,表格如下所示:

文件名说明
%WINDIR%\my.ini,%WINDIR%\my.cnf全局
C:\my.ini,C:\my.cnf全局
BASEDIR\my.ini,BASEDIR\my.cnf全局
defaults-extra-file如果存在其他配置文件可以通过 --defaults-extra-file选项指定
%APPDATA%\MySQL\.mylogin.cnf登录路径配置(仅客户端)
DATADIR\mysql-auto.cnf系统变量(仅服务器)

        关于表中的一些特殊符号与词组它们的含义如下所示: 

  • %WINDIR%:表示 Windows 的系统文件的安装目录;
  • BASEDIR:表示 MySQL 的安装路径;
  • %APPDATA%:表示 Windows 的应用程序数据存储路径;
  • DATADIR:表示 MySQL 数据目录(这个目录也就是配置文件的默认目录:C:\ProgramData\MySQL\MySQL Server 5.7)。

        在 MySQL 寻找配置文件的过程中,如果找到了多个配置文件,并且其中有重复的配置选项,那么高优先级的配置文件就会覆盖低优先级文件中的选项。

2.在 Linux 系统中读取配置文件

        在 Linux 系统中,配置文件的默认路径是:/etc/mysql/mysql.cnf,在 Linux 系统中进入 /etc/mysql 目录下,观察其中包含的内容,如下图所示:

        该目录下还包含一个 mysql.conf.d 的目录,我们进入这个目录观察其中内容如下图所示:

        虽然把客户端与服务器端的配置文件做了区分,但是我们一般不会分别在对应的配置文件中配置,而是把所有配置都写在默认的配置文件中,这样方便我们维护与管理。 

        MySQL 在 Linux 系统中查找并读取配置文件的顺序如下表所示,如果配置文件不存在则需要手动创建,读取的顺序按照表格从上到下来读取,后读取的文件中配置的选项优先级会更高,表格如下所示:

文件名说明
/etc/my.cnf全局
/etc/mysql/my.cnf全局
$MYSQL_HOME/my.cnf服务器特定选项(仅服务器)
defaults-extra-file如果存在其他选项文件可以通过 --defaults-extra-file 选项指定
~/.my.cnf用户特定选项
~/.mylogin.cnf用户特定的登录路径选项(仅客户端)
DATADIR/mysqld-auto.cnf系统变量(仅服务器)

        在上表中有一个选项是 --defaults-extra-file 我们之前还介绍过一个选项 --defaults-file,他们两个的区别就在于选项 --defaults-extra-file 会加载所有指定的配置文件,然后根据优先级来覆盖重复的选项配置,而选项 --defaults-file 指使用它指定的配置文件。

        关于表中的一些特殊符号与词组它们的含义如下所示:

  • ~:表示当前用户的注目录;
  • MYSQL_HOME:是设置的环境变量路径;
  • DATADIR:代表 MySQL 数据目录

        其中 mysqlid-auto.cnf的优先级最高, 在 MySQL 寻找配置文件的过程中,如果找到了多个配置文件,并且其中有重复的配置选项,那么高优先级的配置文件就会覆盖低优先级文件中的选项。

三、配置文件语法

        在运行 MySQL 程序时,命令行上指定的任何长选项都可以在配置文件中指定,要获取选项列表可以使用如下的命令:

# 客户端程序
mysql --help#服务器端程序
mysql --verbose --help

         在配置文件中指定选项时,可以省略前面两个前导破折号,并且每一行表示一个选项,例如:--quick 和 --host=127.0.0.1 在配置文件中的表示如下图所示:

         配置文件中的空行会被忽略,非空行的语法如下所示:

  • #comment,;comment:注释行以 # 或 ; 为开头,注释可以从一行的中间开始;
  • [group]:设置选项的程序或组的名称,不区分大小写。如果选项组名称与程序名称相同,则组中的选项专门应用于该程序,例如:[mysqld] 和 [mysql] 组分别适用于 mysqld 服务端程序和 mysql 客户端程序;
  • opt_name:相当于命令行上的选项名;
  • opt_name=value:选项名对应的值,可以使用转义序列 \b,\t,\n,\r,\\ 和 \s 来表示退格符、制表符、换行符、回车符、反斜杠和空格字符;
  • 为特定 MySQL 版本设置选项可以使用 [mysqld-5.7]、[mysqld-8.0] 的组名;
  • 在配置文件中可以使用 !include 指令来包含其他的配置文件,例如:!include /home/mydir/myopt.cnf 这样就把其他配置文件的配置也加载过来了;
  • 在配置文件中可以使用 !includedir 指令来搜索指定目录中的其他配置文件,例如:!includedir /home/mydir ,但不保证目录中选项文件的读取顺序。

        [client] 这是 MySQL 发行版中所有客户端程序都会读取并应用这个组下的选项(除了 mysqld 这是服务端程序),在这个组下可以指定适用于所有客户端的通用选项,例如:配置用户名和密码,如下图所示: 

        当然这种配置完成后虽然每次连接数据库不用输入密码很方便,但是也会造成很大的安全隐患,所以并不建议直接把密码配置到配置文件当中。

        我们还可以通过 [客户端程序名] 的形式来为不同客户端程序指定选项,例如:[mysql] ,当运行 mysql 程序时会读取并应用该组下的配置,如果选项名与 [client] 重复,[client] 中的选项将会被覆盖,如下图所示:

        有关配置文件的语法还要注意以下几点:

  • 选项名称和值中的前导和尾随空格会自动删除;
  • 在 Windows 系统中设置路径应该使用转义字符,如下所示:
    basedir="C:\\Program Files\\MySQL\\MySQL Server 8.0"
    # 或者使用以下形式
    basedir="C:/Program Files/MySQL/MySQL Server 8.0"
  • !includedir 在 Linux 操作系统中会自动搜索指定目录下任何以 .cnf 为后缀名的文件,在 Windows 中,会搜索指定目录下任何以 .ini 或 .cnf 为后缀名的文件;

  • !include 只会读取包含文件中当前客户端的组配置,例如:当前运行的是 mysql 程序,那么只会读取 [mysql] 组中的选项配置;

  • 在 Windows 中请确保在配置文件的最后一行加一个换行符,否则该行会被省略。

四、案例:设置客户端全局编码格式

        介绍完配置文件中的语法格式后,我们就来在 Linux 编辑一下全局配置文件(默认位置:/etc/mysql/my.cnf),在其中为客户端设置全局的编码格式为 utf8mb4,那么我们只需要在 [client] 节点下指定相应的选项即可,操作如下图所示:

·总结

        文章到此就要结束了,还是要注意:在 Windows 系统中,MySQL 配置文件的后缀名为 .ini 或 .cnf,在 Linux 系统中,MySQL 配置文件的后缀名只有 .cnf,不要在 Linux 中也把 MySQL 配置文件后缀名改成 .ini 哦,每次我们在修改配置文件时,一定要先备份!备份!不然修改错了就无法进行恢复了,本篇文章主要介绍的内容就是 MySQL 中有关配置文件的内容,如果对文章内容有所疑惑,欢迎在评论区进行留言,如果感觉本篇文章还不错希望能收到你的三连支持,那么我们下一篇文章再见吧~~~


http://www.ppmy.cn/embedded/142441.html

相关文章

大模型开发和微调工具Llama-Factory-->数据处理

数据处理 dataset_info.json 包含了所有经过处理的 本地数据集 和 在线数据集。如果使用本地数据集, 务必在 dataset_info.json 中添加对应数据集及其内容的定义 目前支持 Alpaca 格式 和 ShareGPT 的格式 1.Alpaca 针对不同任务,数据集格式要求如下…

数据资产管理是什么?为什么重要?核心组成部分(分类分级、登记追踪、质量管理、安全合规)、实施方法、未来趋势、战略意义

文章目录 一、引言:数据的新时代二、什么是数据资产管理?2.1 定义2.2 核心功能 三、为什么数据资产管理至关重要?3.1 面对的数据管理挑战 四、数据资产管理的核心组成部分4.1 数据分类与分级4.2 数据资产登记与追踪4.3 数据质量管理4.4 数据安…

kafka数据在服务端时怎么写入的

学习背景 接着上篇,我们来聊聊kafka数据在服务端怎么写入的 服务端写入 在介绍服务端的写流程之前,我们先要理解服务端的几个角色之间的关系。 假设我们有一个由3个broker组成的kafka集群,我们在这个集群上创建一个topic叫做shitu-topic&…

jvm-45-jvm dump 文件内存介绍+获取+堆内存可视分析化

拓展阅读 JVM FULL GC 生产问题 I-多线程通用实现 JVM FULL GC 生产问题 II-如何定位内存泄露? 线程通用实现 JVM FULL GC 生产问题 III-多线程执行队列的封装实现,进一步抽象 jvm-44-jvm 内存性能分析工具 Eclipse Memory Analyzer Tool (MAT) / 内…

基于STM32的传感器数据采集系统设计:Qt、RS485、Modbus Rtu协议(代码示例)

一、项目概述 项目目标与用途 本项目旨在设计并实现一个基于STM32F103RCT6微控制器的传感器数据采集系统。该系统通过多个传感器实时监测环境参数,并将采集到的数据传输至上位机进行处理和分析。系统的主要应用领域包括环境监测、工业控制、智能家居等。通过该系统…

【论文复现】从零开始搭建图像去雾神经网络

📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀ 从零开始搭建图像去雾神经网络 A Two-branch Neural Network for Non-homogeneous Dehazing via Ensemble Learning创新点网络结构迁移学习子…

在windows上安装sqlite

sqlite是个轻量级的数据库,很多应用都采用sqlite作为数据库。 以下是在windows安装的步骤。 一 去官网下载安装包 官网地址 : https://www.sqlite.org/download.html 找到windows预编译二进制程序“Precompiled Binaries for Windows”,如下&#xf…

单链表---移除链表元素

对于无头单向不循环链表,给出头结点head与数值val,删除链表中数据值val的所有结点 #define ListNodeDataType val struct ListNode { struct ListNode* psll;ListNodeDataType val; } 方法一---遍历删除 移除所有数值为val的链表结点,…