Documentation Home
MySQL 8.0 参考手册  / 第 4 章 MySQL 程序  / 4.2 使用 MySQL 程序  / 4.2.2 指定程序选项  /  4.2.2.5 使用选项设置程序变量

4.2.2.5 使用选项设置程序变量

许多 MySQL 程序都有内部变量,可以在运行时使用 SET 语句设置。请参阅第 13.7.4.1 节,“变量赋值的 SET 语法”第 5.1.8 节,“使用系统变量”

大多数这些程序变量也可以在服务器启动时设置,方法是使用适用于指定程序选项的相同语法。例如,mysql有一个 max_allowed_packet变量控制其通信缓冲区的最大大小。要将 mysqlmax_allowed_packet的变量 设置为 16MB 的值,请使用以下任一命令:

mysql --max_allowed_packet=16777216
mysql --max_allowed_packet=16M

第一个命令以字节为单位指定值。第二个以兆字节为单位指定值。对于采用数值的变量,该值可以带有 、 或 (大写或小写)的后缀K,以指示 1024、1024 2或 1024 3的乘数。(例如,当用于设置 时 ,后缀表示单位为千字节、兆字节或千兆字节。) MGmax_allowed_packet

在选项文件中,变量设置不带前导破折号:

[mysql]
max_allowed_packet=16777216

或者:

[mysql]
max_allowed_packet=16M

如果愿意,可以将选项名称中的下划线指定为破折号。以下选项组是等效的。两者都将服务器密钥缓冲区的大小设置为 512MB:

[mysqld]
key_buffer_size=512M

[mysqld]
key-buffer-size=512M

在旧版本的 MySQL 中,程序选项可以完整指定,也可以指定为任何明确的前缀。例如, --compress可以将选项赋予mysqldump as --compr,但不能赋予 as ,--comp 因为后者不明确。在 MySQL 5.7 中,不再支持选项前缀;只接受完整选项。这是因为当为程序实现新选项时,前缀可能会导致问题,并且当前明确的前缀将来可能会变得不明确。此更改的一些含义:

  • --key-buffer选项现在必须指定为--key-buffer-size.

  • --skip-grant选项现在必须指定为--skip-grant-tables.

在程序调用时设置变量时可以使用用于指定值乘数的后缀,但不能 SET在运行时设置值。另一方面,使用 SET,您可以使用表达式分配变量的值,这在服务器启动时设置变量时是不正确的。例如,以下第一行在程序调用时是合法的,但第二行不是:

$> mysql --max_allowed_packet=16M
$> mysql --max_allowed_packet=16*1024*1024

相反,下面的第二行在运行时是合法的,但第一行不是:

mysql> SET GLOBAL max_allowed_packet=16M;
mysql> SET GLOBAL max_allowed_packet=16*1024*1024;