开始之前,看完之后如果觉得本文写得好,请给我点赞转发加关注,谢谢。
首先我们能明白,为什么要使用配置选项文件的原因
答案很简单,因为每次启动服务器时,我们总不能每次在命令行上指定选项,这样的做法大大降低效率,而且没必要,我们需要更方便的办法,而且对于复杂选项,更不容易出错。因此我们要使用选项文件去指定选项。
然后今天要讲的重点,
我们可以在一个地方查看选项文件以查看服务器配置或可以使用分组选项创建多个配置,每个配置都在自己的配置文件中。例如在同一主机上启动多个配置不同的服务器,使用可选配置启动测试或开发服务器。
那么配置选项文件位置在哪儿呢?一般MySQL服务器在标准位置上可以找到该文件。Linux和Windows的标准选项文件名不同,在 Linux上, 叫 my.cnf在Windows上, 叫 my.ini。强调一点:没有单独的my.cnf或my.ini文件。这是因为服务器可能从不同的位置可以读取多个my.cnf或my.ini文件。
可以使用— —help命令行选项查看运行MySQL程序。查看每个程序读取的选项文件。
服务器端:可以添加— —verbose命令以查看服务器选项文件。
例如mysqld --help –verbose。注意:如果在mysqld已经运行时执行此命令,它会在显示结果之前生成错误消息。
客户端:mysql –help就行了。
标准环境中,在Linux下,文件位置在/etc。是作为所有用户使用的全局选项文件。
当然你也可以在用户的主目录中创建名为.my.cnf的用户特定选项文件。为该用户独有。亦或者设置了MYSQL_HOME环境变量,它将搜索文件$ MYSQL_HOME / my . cnf中使用。当然你也可以通过脚本Mysqld_safe设置,来读取选项/usr.
选项文件中的选项被打包成组,我们称之为配置选项文件组。每个组前面都有一个[group-name]行,用于命名组。通常,组名是应用这组选项的程序的类别或名称。选项组出现在对应选项文件位置的下方,通过服务器端:添加— —verbose以查看服务器选项文件。
举个例子:mysqld --help --verbose 2> /dev/null | grep "following groups"
The following groups are read: mysqld server my
其他命令:mysql --help | grep "following groups"
The following groups are read: mysql client
关于选项组的名字,举几个例子:
[client]:适用于所有客户端程序的选项,用于指定所有客户端通用的连接参数。
[mysql] and [mysqldump]: 分别应用于mysql和mysqldump客户端的选项,用于其他客户端程序读取具有自己名称的选项组
[server]: 适用于所有服务器程序或脚本的选项
[mysqld], [my], and [mysqld_safe]: 适用于特定服务器程序或脚本的选项
客户端选项组的例子:
user and password: 明文认证凭证,一般使用mysql_config_editor创建加密的凭据。
prompt=prompt: 替换默认 mysql> prompt.举个例子:设置prompt='\u@\h[\d]> ' 产生提示 username@hostname[database]>。
safe-updates: 防止没有指定WHERE子句的UPDATE或DELETE操作。
init-command=SQL: 客户端连接时执行的SQL字符串。
tee=filename: 将所有命令和输出附加到指定的文件。
创建或修改选项文件时,编辑用户必须具有写权限,而MySQL程序默认只有只读访问权限,当服务器和客户端程序读取选项文件,不创建或修改它们。
当创建或修改一个选项,写入配置选项文件中,必须使用使用选项文件形式,类似于命令行形式,但省略了前导破折号。如果一个选项接受一个值,则在等号(=)周围允许有空格。但对于命令行上指定的选项则不是这样,它们不接受等号周围的空格。
一个简单的示例:在Linux中MySQL安装提供了一个名为my-de的示例配置文件。RPM安装在位于/usr/share/mysql目录下,二进制归档安装在位于共享子目录中,整个示例配置文件不能被MySQL程序直接读取。安装过程将my-de示例文件复制到/etc. 如果/etc已经存在,则将其复制到/etc。
配置选项文件中的优先级:
MySQL程序按照定义的顺序读取配置文件(可以使用程序— —help[— —verbose]查看)。当MySQL程序从多个选项组读取选项时,Mysqld按照读取[Mysqld],[server]和[Mysqld -5.7]组的顺序。如果在多个配置文件中指定了一个选项值,后面文件中的选项将覆盖前面文件中的选项。如果在同一个文件中的多个组中指定了一个选项值,则文件中后面的选项优先。
当从命令行加载或忽略选项文件时,— —no-defaults:不读取任何选项文件。— —defaults-file=file_name:只使用指定位置的选项文件。— —defaults-extra-file=file_name:在指定位置使用额外的选项文件。以上这些命令必须是命令行上的第一个选项。
举个例子:当只使用/etc/my- options .cnf文件,要求忽略标准选项文件。就可以输入:
mysql --defaults-file=/etc。
用指令加载选项文件时,将这些指令放在一个选项组中,以便程序加载额外的选项文件。
执行my_print_defaults从命令行显示每个组的选项。在[mysql]和[client]中显示选项如下:
$ my_print_defaults mysql client --user=myusername --password=secret --host=localhost --port=3306 --character-set-server=latin1
或者可以 mysql --print-defaults mysql client ,两者输出结果相同。