配置MySQL选项

用户启动MySQL服务器或者客户端时,可以通过命令行或者配置文件对服务器或者客户端的选项进行配置。如果用户没有为选项设定值,MySQL将为每个选项设置默认值。当服务器运行时,用户可以通过动态变量对选项值进行更改,并对其进行持久化配置,服务器重启后,该选项值能够持久有效。配置选项的优先级从低到高依次为,选项的默认值-配置文件的选项值-命令行的选项值-持久化的选项值-动态变量设置的选项值。如果用户在配置文件中为某一选项指定了值,但在启动mysqld时,通过命令行为该选项指定了不同的值,MySQL将优先使用通过命令行指定的选项值。

通过对服务器的选项进行配置,用户可以控制日志文件的输出、指定数据或日志的保存路径、更改大连接数、缓存和缓冲的大小,及启用或禁用存储引擎。

显示选项值

用户可以通过以下命令查看已配置的选项值:

mysql> SHOW GLOBAL VARIABLES;shell> mysqladmin variablesshell> mysqld --verbose --help

选项值的命名规则

选项的名称在配置文件、命令行和使用变量时规则不同。在配置文件中,名称使用小写的字母,两个词之间使用“-”或“_”进行连接,例如,“log-error”,“default_password_lifetime”。当在命令行中使用时,则使用前缀“--”,例如,“--log-error”。当在运行中的服务器使用变量时,在两个词之间全部使用“_”进行连接,例如,“log_error”。

使用命令行选项的例子:

mysqld --no-defaults --basedir=/local/mysql --datadir=/local/mysql/data --user=mysql --socket=/local/mysql/socket --port=3310

配置文件

使用配置文件对服务器和客户端的选项可以为用户带来极大的便利性,并减少错误的发生。用户可以利用配置文件在同一主机上启动多个MySQL服务器。通常情况下,MySQL的配置文件名称为my.cnf(Linux)位于/etc/my.cnf,my.ini(Windows)位于%PROGRAMDATA%\MySQL\MySQL Server 8.0路径下,MySQL可以读取多个配置文件,其中的选项值以后读取的文件中的选项值为准。

运行MySQL程序时使用--help选项可以查看配置文件保存的位置。注意,使用mysqld时需要加上--verbose选项,例如:

shell> mysqld --help --verboseshell> mysql -help

在配置文件中,选项按照组进行分类,组的名称使用“[]”包围,例如[mysqld],[mysqldump],通常情况下,组名称使用MySQL的各个程序进行分类。除此之外[client]适用于全部的客户端程序,[server]适用于全部的服务器程序和脚本。例如:

# The following options will be read by MySQL client applications.# Note that only client applications shipped by MySQL are guaranteed# to read this section. If you want your own MySQL client program to# honor these values, you need to specify it as an option during the# MySQL client library initialization.#[client]
# pipe=
# socket=MYSQL
port=3306
[mysql]no-beep
# default-character-set=
# SERVER SECTION# ----------------------------------------------------------------------## The following options will be read by the MySQL Server. Make sure that# you have installed the server correctly (see above) so it reads this # file.## server_type=3[mysqld]
# The next three options are mutually exclusive to SERVER_PORT below.# skip-networking# enable-named-pipe# shared-memory
# shared-memory-base-name=MYSQL
# The Pipe the MySQL Server will use# socket=MYSQL
# The TCP/IP Port the MySQL Server will listen onport=3306
# Path to installation directory. All paths are usually resolved relative to this.# basedir="C:/Program Files/MySQL/MySQL Server 8.0/"

注意,当用户创建或修改配置文件时,需要注意文件的写入权限,MySQL程序仅需要读取权限,不会对配置文件进行任何修改。

从命令行加载配置文件

通过命令行加载配置文件时,需要将其指定为个选项,可以通过如下选项进行加载,--no-defaults(不读取任何配置文件)、--defaults-file=文件名、--defaults-extra-file=文件名。例如:

mysql --defaults-file=/etc/my-opt.cnf

此外,在配置文件中加入定向指令,可以使程序读取额外的配置文件,例如:

!include 文件名!includedir 路径名

相关文章