mysql 的系统变量有两个级别, GLOBAL 和 SESSION (也叫 LOCAL).

MysqlServer 启动的时候加载 GLOBAL 变量, 每个变量都是默认值. 每个客户端先继承 GLOABL 变量, 之后可以有各自的 SESSION 级别变量.

像这样设置全局变量:

SET GLOBAL max_connections = 1000;
SET @@global.max_connections = 1000;

像这样设置局部变量:

SET SESSION sql_mode = 'TRADITIONAL';
SET @@session.sql_mode = 'TRADITIONAL';
SET @@sql_mode = 'TRADITIONAL';

特别的是 @@sql_mode 这样的形式, 在读取的时候先读本地变量, 如果没有就返回全局变量; 但是 SET 的时候只会设置本地变量.

可以在一行里设置多条配置, 用逗号隔开. 如果其中有一条分句失败, 则整条句子失败.

关于布尔型的配置, 建议只使用1(开)和0(关).

关于单位, 在sql中只能以比特为单位, 但是支持 3600*24 ; 在配置中可以使用大小写不敏感的 G M K 但是不能用乘法.

查看系统变量

SHOW VARIABLES;
SHOW SESSION VARIABLES;
SHOW SESSION VARIABLES LIKE 'max_join_size';

最后建议所有设置都明确使用 @@global.@@session. .

恢复默认值

DEFAULT 赋值给局部变量, 局部变量会恢复为全局变量的值. 把 DEFAULT 赋值给全局变量, 全局变量会恢复为MySQL编译时的默认值(注意:不是cnf中的配置).

SET @@session.max_join_size=DEFAULT;
SET @@session.max_join_size=@@global.max_join_size;