首页 > 编程知识 正文

mysql配置文件详解,MySQL的配置文件

时间:2023-05-05 23:23:39 阅读:36886 作者:1998

除了从命令行设置MySQL参数项外,还可以通过将设置写入配置文件来进行设置。 标准MySQL客户端程序在启动时搜索这些配置式,并使用文件中相应的设置项。 通过编写配置文件,可以大大缩短运输时间,因为每次调用程序时都不需要在命令中重新定义参数项。

缺省情况下,MySQL server使用运行时预编译的值作为设置项的值。 如果这些默认值在实际环境中不合适,则可以在运行服务器时提供不同的运行时参数值。

有几个配置项目可以定义MySQL的重要目录和文件位置信息。 例如,在Windows上,默认的预编译安装目录(base directory )是c:(MySQL )。 如果系统在其他位置安装了MySQL,则必须使用--basedir参数设置来通知服务的正确目录位置。 否则,服务将无法启动。 同样,如果未将安装目录下的data子目录用作数据存储目录,则必须使用datadir条目设置来通知服务的正确位置。

某些设置控制MySQL server写入哪些日志。

一些设置用于覆盖服务器中与性能相关的内部变量值,例如用于控制最大并发连接数的设置和用于控制buffer和cache大小的设置。

某些存储引擎在预编译时被启用或禁用。 例如,如果编译了服务程序并启用了InnoDB支持,则缺省情况下将启用。 如果未使用InnoDB表,则可以设置--skip-InnoDB条目以节省内存。 此参数在MySQL 5.7或更高版本中被禁用,因为innodb当前是标准配置。 在此作为例子进行说明)。 也可以设置默认存储引擎并更改设置。

一些配置项目还可以设置InnoDB表空间。 如果未明确放置,也可以根据情况调整这些值,例如--innodb_autoextend_increment、-- innodb_page_size。

通过定义运行时配置项,可以在服务启动时更改性能。 通常,可以通过命令行和配置文件实现此设置。 (例如,如果在窗口服务上运行MySQL服务,则可能无法从命令行进行设置。 启动时必须使用--defaults-file参数条目在配置文件中进行设置。 根据对应版本而不同。 )

要了解服务器支持的设置,可以手动调用以下命令:

#mysqld----verbose----help

可以在使用mysqld命令时同时设置和使用帮助中显示的设置项。 当然,更常见的是写入配置文件。 这有几个原因。

通过将配置项写入文件,无需在每次启动MySQL服务时在命令中定义配置参数。 这不仅方便,还可以避免因复杂的设置项目过多而导致的输入错误。

如果使用server启动脚本调用服务,则无法将设置项添加到命令中进行启动。 因为此脚本只有参数值start和stop,所以这里不需要使用配置文件设置启动设置。

如果配置文件列出了所需的所有服务配置,则可以从文件中快速轻松地了解设置。

标准MySQL服务器在几个位置搜索配置文件。 使用适当位置的配置式,但如果找不到,服务也将正常启动,并且不会报告错误。 在Windows和Unix上,对应的标准配置文件不同。

在Windows上,程序在目录(例如C:Winodws或C:WinNT目录)中按my.ini、my.cnf的顺序搜索配置式。

在目录中查找的顺序如下。 最上面的文件先读。

注意:如果使用配置向导进行安装,也就是将MySQL server注册为Windows服务,则不会按标准配置文件目录搜索服务,而是在MySQL安装目录下的my.ini文件中搜索服务当然,如果在注册服务时使用--defaults-file指定了配置文件,则服务只查找指定位置的配置文件。 因此,如果需要更改配置,请在服务读取的配置文件中输入设置。

在Unix上检测到两个通用配置文件:/etc/my.cnf和$MYSQL_HOME/my.cnf。 只有在设置了MYSQL_HOME环境变量时,才使用第二个文件。 通常,可以将其设置为MySQL安装目录。 如果在服务启动时未设置此参数,则mysql_safe脚本将尝试在运行时设置此MYSQL_HOME环境变量。 )

Unix配置文件搜索顺序还包括~/.my.cnf,可以位于当前启动MySQL的用户的主目录中。 但是,该文件是用户特定的文件,因此不太适合作为服务配置参数存储。 通常,当您以root用户--user=mysql调用mysql服务时,服务读取的特定用户配置文件取决于调用该服务的登录用户,并且可能会使用不一致的配置信息。 )

在目录中查找的顺序如下。 最上面的文件先读。

在配置式中定义服务启动配置项时,使用[mysqld]组。 文件不同时

存在,那么你可以使用编辑器新建一个平文件。建立和修改文件需要对应的写入权限。MySQL服务本身仅需要读取权限即可;它会读取其中信息,但并不会新建或改动文件。

以下例子中,我们例举了一些使用配置文件进行设置的方法:

如果在的MySQL安装在Windows上,服务假设默认安装目录为C:mysql且数据子目录名为data。然而你希望将MySQL安装在其它地方,如: E:mysql,你就必须使用 --basedir参数项告知服务对应路径。配置文件中的配置项前不用写双横杠【--】,你如下在配置文件中设置安装目录:

[mysqld]

basedir=E:/mysql

如果你将E:mysql下的data子目录作为数据目录,那basedir值已近足够了。不过如果你希望使用不同的数据目录路径,你就必须设置 --datadir项,如:

[mysqld]

basedir=E:/mysql

datadir=D:/mysql-data

请注意,在这种情况下,你也需要将原数据目录的拷贝到新对应位置D:mysql-data上。如果不这样的话,当启动服务时,由于找不到配置文件对应的数据目录,会导致服务启动失败。

对于配置参数中设置的Windows路径名,你可以使用斜杠【/】或者【\】。例如,定义basedir值为E:mysql,你可以以以下两种格式进行设置:

basedir=E:/mysql

basedir=E:mysql

如果路径名包含空格,你可以用双引号括起来,如:

basedir=” C:/Program Files/MySQL/MySQL Server 5.6”

在Windows上,默认共享内存(shared-memory)连接方式是未启用的。为了使用此连接方式,使用以下配置项:

[mysqld]

shared-memory

类似,mysqld-nt和mysql-max-nt服务程序都在Windows平台上支持命名管道(named-pipe)连接方式,但它们都并未启用。为了启用这种连接方式,可使用以下配置项:

[mysqld]

enable-named-pipe

为了启用日志,可以使用配置项启用你所希望的类型。以下配置项启用了通用查询日志,二进制日志以及长时间查询日志(以MySQL v5.7版本为例):

[mysqld]

general-log

log-bin

log-slow-queries

为了定义默认存储引擎为InnoDB,可以使用 --default-storage-engine项:

[mysqld]

default-storage-engine=InnoDB

配置文件中也可设置许多MySQL服务系统变量值。例如,为了将最大客户端连接数从默认151提升至201,并增加MyISAM的键缓存(key cache)从8MB到128MB,你需要设置max_connections和key_buffer_size变量:

[mysqld]

max_connections = 201

key_buffer_size = 134217728

MySQL版本在v5.6.8之前包含有几个模板配置文件。在Windows中,文件名如my-small.ini和my-large.ini。这些被安装时同时建立在安装目录中。在Unix中,它们名为my-small.cnf和my-large.cnf。在my-default.cnf v5.6.8之后,这些文件被my-default.cnf文件代替。

你可以通过拷贝模板文件到标准配置文件路径上,将其文件名修改为指定所用配置文件名。不过在使用模板文件时,你需要确保能读懂文件中的意思,理解其中配置项设置的效果并作出相应修改。

3.5.1使用--safe-updates配置项

配置文件中的配置项按组进行组织,每组配置项前都有一个以中括号括起来的组名(如:[group-name])。通常情况下,组名为所使用配置项对应的程序名。例如, [mysql]和[mysqldump]组对应的配置项被用于mysql和mysqldump命令工具。而特别的组名如[client]则被用于所有客户端程序。一般[client]组被设置连接配置参数,因为不管你使用哪个客户端程序都连接到此相同server上。

在配置文件中进行设置时,请将使用于命令行时的参数前的双横杠去掉。如果配置项设置一个值,可与允许在等号【=】两边有空格,不过在用于命令行时,这是不允许的。以下为一个配置文件例子:

[client]

host = myhost.example.com

compress

[mysql]

safe-updates

[mysqld]

port=3011

注意:除非服务由root用户启动,否则端口号必须为1024或比之更大的值。

在上面这个例子中,[client]组定义了主机名,且设定C/S访问协议需使用压缩模式进行发送。组中的配置项应用于所有标准的客户端。而[mysql]组仅应用于客户端程序mysql。[mysql]组的设置要求了mysql命令应该使用 --safe-updates项。(mysql命令程序将会同时使用[client]和[mysql]组中的配置,因此总共有3个配置项被mysql使用。)

3.5.2配置文件位置

配置文件的位置取决于你的操作系统。标准配置文件如:

在Windows上,一般MySQL会按以下顺序查找配置文件: my.ini和cnf。而MSI安装精灵会将配置文件放置在服务注册设定时所指定的位置下)。

在Unix平台上,文件/etc/my.cnf将作为全局配置文件被所有用户使用。你也可以在你的HOME目录中建立用户自己定义的cnf文件。如果两个都存在,全局文件会被先读取。

当然,MySQL的命令行程序会在查找$HOME目录下的配置文件前,先在$MYSQL_HOME目录下查找配置文件(例如,../MySQL Server 5.6)。

MySQL(客户端)程序也可以对多个配置文件进行访问。程序会查找每个标准配置文件并在文件存在时进行读取。如果文件不存在也不会报错。

如果需要使用某个配置文件,你可以使用编辑器建立一个平文件进行编辑。

为了建立或修改此文件,你必须有相应的写权限。客户端程序仅需读权限即可。

为了告知程序读取指定的配置文件,使用命令行启动时可使用以下参数项(在命令中必须是第一个参数项):

配置项

注释

--defaults-file=file_name

使用指定位置的配置文件

--defaults-extra-file=file_name

使用指定位置的额外配置文件

--no-defaults

使程序不使用配置文件

例如,使用mysql工具命令时使用C:my-opts配置文件而不使用标准配置文件:

shell> mysql -–defaults-file=C:my-opts

在配置文件中,你还可以使用 !include和 !includedir指令:

如果某行中出现 !include file_name,那就会从这句指令开始跳转到对应file_name进行读取,读完后再调回原先的配置文件继续之前的读取。

如果某行中出现 !includedir dir_name,那么类似的会从这句指令开始跳转到对应dir_name目录并查找尾缀为.cnf的文件(Windows平台上为.cnf和.ini)进行配置读取,在读完后回到之前跳出的配置文件完成余下的读取工作。

如果一个配置项被定义多次,不管是在同一个文件中还是在不同的多个配置文件中,配置项的值取最后设置的那个。

注意:在命令行中设置的配置项会最终覆盖配置文件读取的配置项的值。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。