Mysql

概述

mysql的参数可以分为两类:
a. 动态参数,数据库启动期间能被修改,而修改又分为两种(global级,session级)。
b. 静态参数,即数据库启动期间不能修改。

接下来利用参数wait_timeout介绍参数的一些操作,注意wait_timeout的值还受interactive_timeout的影响,先不管这些了,只是介绍操作

一、参数的查看

1.1 查看global级参数

mysql> select @@global.wait_timeout;
or
mysql> show global variables like 'wait_timeout';
or
mysql> select * from performance_schema.global_variables where variable_name ='wait_timeout';

1.2 查看session级参数

(session可以用local替代,后面同)
mysql> select @@wait_timeout;
or
mysql> select @@session.wait_timeout;
or
mysql> show variables like 'wait_timeout';
or
mysql> show session variables like 'wait_timeout';
or
mysql> select * from performance_schema.session_variables where variable_name ='wait_timeout';

注意:对于静态参数,没有global级和session级区分,因为这种参数global级和session级是一样的,用以上任意一种方法均可。

二、参数的修改

2.1 session级参数的修改

mysql> set wait_timeout=10;
or
mysql> set session wait_timeout=10;
or
mysql> set @@wait_timeout=10;
or
mysql> set @@session.wait_timeout=10;

2.2 global级参数的修改

mysql> set global wait_timeout=10;
or
mysql> set @@global.wait_timeout=10;

global级参数的修改注意事项:
a. 修改需要super权限
b. show variables会发现参数并没有生效,这是因为set global只改了global级的参数,只对重新打开的会话生效。
如果想修改已经打开的会话的参数,需要执行set wait_timeout=10。

2.3 session级参数和global级参数转换方法

将session级参数值设置为global级参数值
mysql> set @@session.wait_timeout=@@global.wait_timeout;

将global级参数值设置为session级参数值
mysql> set @@global.wait_timeout=@@session.wait_timeout;

2.4 将参数值设置为MySQL编译时的默认值

session级

mysql> set wait_timeout=DEFAULT;


global级
mysql> set global wait_timeout=DEFAULT;

注意:并不是所有的动态参数都能被设置为DEFAULT

2.5 永久生效和静态参数修改

2.1~2.4所提供的修改动态参数的方法并不是永久的,随着数据库关闭而消失。如果需要永久生效,就应该修改参数文件并重启生效。

# vi /etc/my.cnf
[mysqld]
wait_timeout=10

静态参数的修改也只能通过修改参数文件,如在数据库中修改静态参数会报以下错误
(root@localhost)[performance_schema]> set global datadir='/db/mysql';
ERROR 1238 (HY000): Variable 'datadir' is a read only variable

原文地址:https://www.cnblogs.com/ddzj01/p/9799053.html