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